如果是,否则为elif循环

时间:2019-06-18 02:55:46

标签: python

当我用*做正方形时,我试图建立一个循环。如果box_size甚至是一个实心正方形。如果box_size是奇数,则应该绘制正方形轮廓。这应该一直进行到用户输入0且程序停止为止。我将这两个代码混合在一起,但是偶数代码有效,而奇数代码无效。

#Input
while True:
    box_size=input("box_size:" )
    box_size=int(box_size)
    if box_size % 2:
        break
    for row in range(box_size):
      for col in range(box_size*2):
        print('*', end='')
      print()
    print()

while True:
    box_size= int(input("box size: "))
    if box_size % 1:
        print('*' * box_size)
        for i in range(box_size-2):
            print ('*' + ' ' * (box_size-2) + '*')
            print('*' * box_size)

#Output
box_size:6
************
************
************
************
************
************

box_size:5
box size:

4 个答案:

答案 0 :(得分:1)

您在这里有多个问题,您似乎很困惑,因为您发布了很多问题,其中包含您正在处理的实际问题的点点滴滴。

可能不需要while子句,因为您只想运行一次。您也可以检查数字是否为奇数,甚至是用户输入一次,因此无需询问两次。因此,工作版本为:

box_size=input("box_size:" )
box_size=int(box_size)
if box_size % 2:
    print('*' * box_size)
    for i in range(box_size-2):
        print ('*' + ' ' * (box_size-2) + '*')
    print('*' * box_size)
else:
    for row in range(box_size):
        for col in range(box_size*2):
            print('*', end='')
        print()
    print()

答案 1 :(得分:1)

只需对您的代码进行修改。

while True:
    box_size=int(input("box_size:" ))
    if box_size == 0:
        break
    elif box_size % 2:
        print(box_size * '*')
        for col in range(box_size-2):
            print ('*' + (box_size-2) * ' ' + '*')
        print(box_size * '*')
    else:
        for row in range(box_size):
            for col in range(box_size*2):
                print('*', end='')
            print()
        print()

答案 2 :(得分:0)

您可以尝试一下

flag= False
while not flag:
    box_size=int(input("box_size:" ))
    if box_size == 0:
        flag=True 
    elif not box_size % 2:
        for row in range(box_size):
            print(2*box_size*'*')
    else:
        print(2*box_size*'*')
        for row in range(1,box_size-1):
            print('*'+2*(box_size-1)*' '+'*')
        print(2*box_size*'*')

输出:

box_size:6
************
************
************
************
************
************
box_size:5
**********
*        *
*        *
*        *
**********
box_size:0

答案 3 :(得分:-2)

尝试一下?

while True:
    box_size=input("box_size:" )
    box_size=int(box_size)
    if box_size == 0:
        break # program stops
    elif box_size % 2 == 0: # even numbers
        for row in range(box_size):
            for col in range(box_size*2):
                print('*', end='')
            print()
        print()
    else: # odd numbers
        print('*' * box_size)
        for i in range(box_size-2):
            print ('*' + ' ' * (box_size-2) + '*')
        print('*' * box_size)

我假设您的意思是程序将继续运行以提示另一个box_size,直到用户最终输入0作为输入为止。