【问题标题】:Printing rectangular that hollow in the middle, using user input and for loops使用用户输入和for循环打印中间空心的矩形
【发布时间】:2018-05-15 23:05:49
【问题描述】:

-我的第一个目标是打印:-

*** 
* * 
*** 

我尝试过的:

num = int(input("Enter the size"))

for x in range(1, num+1):
    for y in range(num):
        if (y==0 or y==num) or (x==0 or x==num):
            print("*", end= "")
        else:
           print(end= "")
    print()

当我输入 3 作为数字时的结果:

*
*
***

请修正我的代码,以便我可以得到第一个目标的正确结果。

-我的第二个目标是如果我在 num 中输入 4,代码也必须能够像这样打印:-

**** 
*  * 
*  * 
****

谢谢

【问题讨论】:

    标签: python loops for-loop user-input python-3.6


    【解决方案1】:

    您的原始代码几乎可以正常工作!在这里,它做了一些小的修改,让它做你想做的事。

    第一个问题是您似乎对 x 和 y 可以采用的范围感到困惑。如果您在 range(num) 上循环,则循环中的计数器将介于零和 num - 1 之间,并且循环将执行 num 次。所以 0 是第一次迭代,num - 1 是最后一次(所以,正方形的边)。

    第二个问题是你需要在 else 子句中打印一个空格字符而不是什么都不打印。

    这是固定版本:

    num = int(input("Enter the size"))
    
    for x in range(num):
        for y in range(num):
            if (y==0 or y==num-1) or (x==0 or x==num-1):
                print("*", end= "")
            else:
                print(" ", end= "")
        print()
    

    【讨论】:

    • 感谢您的解释
    【解决方案2】:

    您的代码的更多“pythonic”版本:

    if __name__=='__main__':
        num = int(input("Enter the size "))
    
        print('*'*num)
        for i in range(num-2):
            print('*'+' '*(num-2)+'*')
        print('*'*num)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多