Python 3.x 而loop会打印很多次mesage
我的代码要求用户输入一个数字,如果这个数字是一个整数,并且小于20,那么它就完成了,如果不是,它应该打印“error,try-ear”,让我们再试一次,但是它只是不正常地打印消息,没有结束Python 3.x 而loop会打印很多次mesage,python-3.x,Python 3.x,我的代码要求用户输入一个数字,如果这个数字是一个整数,并且小于20,那么它就完成了,如果不是,它应该打印“error,try-ear”,让我们再试一次,但是它只是不正常地打印消息,没有结束 good1 = False while not good1: storage = input("A number") try: int(storage) good1 = True good2 = False while not g
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.")
您从未更改过
good2
的值,因此该值始终为真并持续打印
尝试打破内部循环。另外,请注意,您已将good1
设置为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.")
您从未更改过
good2
的值,因此该值始终为真并持续打印
尝试打破内部循环。另外,请注意,您已将good1
设置为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.")
那是因为你有
while not good2:
这是永恒的。因为你基本上说的是while true,检查int是否大于等于20。如果是,则post error else post“-”。然后if语句继续运行,因为good2从未更改为false(或者更确切地说,true是因为notgood2)这是因为
while not good2:
这是永恒的。因为你基本上说的是while true,检查int是否大于等于20。如果是,则post error else post“-”。然后if语句继续运行,因为good2从未更改为false(或者更确切地说,true是因为NOT good2)您可能正在寻找类似以下内容:
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.")
您可能正在寻找以下内容:
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.")
请调试你的程序。您从未将
good2
从False
切换到任何其他值,因此if将永远不会离开循环!请调试你的程序。您从未将good2
从False
切换到任何其他值,因此if将永远不会离开循环!我更改了它,但现在我无法再次尝试输入数字,代码刚刚结束,尽管上述方法不是解决手头问题的最佳算法。正如@Zachary Blackwood给出的那样,只有一个布尔标志good
就足够了,但这里我想向您解释如何编写您想到的算法,而不是如何解决问题。:)我更改了它,但现在我无法再次尝试输入数字,代码刚刚结束,尽管上述方法不是解决手头问题的最佳算法。正如@Zachary Blackwood给出的那样,只有一个布尔标志good
就足够了,但这里我想向您解释如何编写您想到的算法,而不是如何解决问题。:)