Python While 循环 - 在 for 循环中嵌套 if 语句以检查数组中的数字
Python While loop - nesting if statement in for loop to check numbers in array
目前真的很纠结这个问题,需要一些帮助来弄清楚我哪里出了问题。
所以目前只是在做一些练习,运行 出错了。查看用户在数组中输入 'user input' 的数字是否大于设定的整数。我想遍历数组中的数字,然后让 if 语句打印出一条消息,说明他们输入的数字太高。然后我希望循环重新开始。我得到的错误是循环打印消息但不迭代回 while 循环而是只是退出。我不知道为什么会这样,也想不通。任何帮助将不胜感激,提前谢谢你。
user_lottery_numbers = []
while type(user_lottery_numbers) is not int:
try:
user_lottery_numbers = [int(x) for x in input("Please enter your numbers followed by the enter key:").strip(",").split(",")]
for x in user_lottery_numbers:
if (x) > 60:
print ("The number %s you have entered is too high please stay within the range" % (x))
continue
if len(user_lottery_numbers) <6 or 0 in user_lottery_numbers:
print ("Not enough numbers and or you have made one number zero by mistake")
continue
if len(user_lottery_numbers) >6:
print ("Too many numbers")
continue
print (user_lottery_numbers)
print ("Thank you for the correct format of numbers")
break
except ValueError:
print ("You must only enter 6 integers followed by the enter key")
首先,break
语句终止包含它的循环,因此 while 循环末尾的 break
语句导致循环在 for
之后立即终止循环结束。因此,如果您删除 break
语句,您将获得所需的结果:
Please enter your numbers followed by the enter key:5,4,61,77
The number 61 you have entered is too high please stay within the range
The number 77 you have entered is too high please stay within the range
Please enter your numbers followed by the enter key:
其次,查看您的代码,我知道您认为 continue
语句会导致跳过 break
语句,但是 continue
语句和 break
语句不在同一个循环中。您可以删除 continue
,因为它在这里没有任何作用。
如果您希望 while
循环在用户输入正确的输入后结束,我会将代码更改为:
user_lottery_numbers = []
continue_running = True
bad_input = False
while continue_running:
try:
user_lottery_numbers = [int(x) for x in input("Please enter your
numbers followed by the enter key:").strip(",").split(",")]
for x in user_lottery_numbers:
if x > 60:
print ("The number %s you have entered is too high please
stay within the range" % (x))
bad_input = True
if bad_input:
continue_running = True
else:
continue_running = False
except ValueError:
print ("You must only enter 6 integers followed by the enter key")
目前真的很纠结这个问题,需要一些帮助来弄清楚我哪里出了问题。
所以目前只是在做一些练习,运行 出错了。查看用户在数组中输入 'user input' 的数字是否大于设定的整数。我想遍历数组中的数字,然后让 if 语句打印出一条消息,说明他们输入的数字太高。然后我希望循环重新开始。我得到的错误是循环打印消息但不迭代回 while 循环而是只是退出。我不知道为什么会这样,也想不通。任何帮助将不胜感激,提前谢谢你。
user_lottery_numbers = []
while type(user_lottery_numbers) is not int:
try:
user_lottery_numbers = [int(x) for x in input("Please enter your numbers followed by the enter key:").strip(",").split(",")]
for x in user_lottery_numbers:
if (x) > 60:
print ("The number %s you have entered is too high please stay within the range" % (x))
continue
if len(user_lottery_numbers) <6 or 0 in user_lottery_numbers:
print ("Not enough numbers and or you have made one number zero by mistake")
continue
if len(user_lottery_numbers) >6:
print ("Too many numbers")
continue
print (user_lottery_numbers)
print ("Thank you for the correct format of numbers")
break
except ValueError:
print ("You must only enter 6 integers followed by the enter key")
首先,break
语句终止包含它的循环,因此 while 循环末尾的 break
语句导致循环在 for
之后立即终止循环结束。因此,如果您删除 break
语句,您将获得所需的结果:
Please enter your numbers followed by the enter key:5,4,61,77
The number 61 you have entered is too high please stay within the range
The number 77 you have entered is too high please stay within the range
Please enter your numbers followed by the enter key:
其次,查看您的代码,我知道您认为 continue
语句会导致跳过 break
语句,但是 continue
语句和 break
语句不在同一个循环中。您可以删除 continue
,因为它在这里没有任何作用。
如果您希望 while
循环在用户输入正确的输入后结束,我会将代码更改为:
user_lottery_numbers = []
continue_running = True
bad_input = False
while continue_running:
try:
user_lottery_numbers = [int(x) for x in input("Please enter your
numbers followed by the enter key:").strip(",").split(",")]
for x in user_lottery_numbers:
if x > 60:
print ("The number %s you have entered is too high please
stay within the range" % (x))
bad_input = True
if bad_input:
continue_running = True
else:
continue_running = False
except ValueError:
print ("You must only enter 6 integers followed by the enter key")