If,else,elif循环

2024-04-25 19:24:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在用*做正方形的时候建立一个循环。如果盒子的大小是偶数,它应该是一个实心正方形。如果盒子的大小是奇数,它应该是一个正方形的轮廓。这应该一直持续到用户输入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:

Tags: 代码inboxtrueforinputsizerange
3条回答

你在这里有多个问题,你似乎已经困惑,因为你张贴了这么多的问题与零碎的实际问题,你正在处理。你知道吗

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()

刚刚修改了你的代码。你知道吗

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()

你可以试试这个

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

相关问题 更多 >