python-3.x While循环打印消息无数次

ne5o7dgx  于 2023-02-20  发布在  Python
关注(0)|答案(3)|浏览(121)

我的代码要求用户输入一个数字,如果该数字是整数且小于20,则完成,否则应打印“错误,重试”,然后让我们重试,但它只是失控,打印消息而没有结束

good1 = False
while not good1:
    storage = input("A number")
    try:
        int(storage)
        good1 = True
        good2 = False
        while not good2:
            if int(storage) > 20:
                print("Error, try again.")
            else:
                print("--")
    except ValueError:
        print("Error, try again.")
q3qa4bjr

q3qa4bjr1#

你可能会寻找这样的东西:

good_number = False

while not good_number:
    storage = input("A number")
    try:
        if int(storage) > 20:
            print("Error, try again.")
        else:
            print("--")
            good_number = True
    except ValueError:
        print("Error, try again.")
xzv2uavs

xzv2uavs2#

您从未更改good2的值,因此它始终为真并继续打印。
尝试跳出内部循环。另外,请注意,您已经将good1 set设置为True,所以现在即使它大于20也是好的,如果它大于20,您需要将其设置为False,以使程序再次要求输入新的数字。代码应如下所示

good1 = False
while not good1:
    storage = input("A number")
    try:
        int(storage)
        good1 = True
        good2 = False
        while not good2:
            if int(storage) > 20:
                print("Error, try again.")
                good1 = False
            else:
                print("--")
                good2 = True;
            break
        if good2:
            break
    except ValueError:
        print("Error, try again.")
krugob8w

krugob8w3#

那是因为你

while not good2:

这个语句会一直运行下去,因为你基本上是在说while true,检查int是否〉= 20,如果是的话,post error else post“--",然后if语句会一直运行,因为good 2从来没有变成false(或者说,true是因为NOT good 2)

相关问题