为什么这个尝试循环循环当我改变它不?



我对编码完全陌生,想做一个猜谜游戏作为开始。这就是为什么如果您知道自己在做什么,代码可能看起来非常粗糙。我不喜欢。我希望代码在得到不是y/n的答案时循环,但问题是,现在即使它收到是/否的答案,它仍然循环并继续问相同的问题。

while not infiniteguessanswer:
try:
if numberofchances > 50:
infiniteguess = input('it seems the number you put it is very high! would you just like infinite guesses instead? Y/Nn')
if infiniteguess == ['Y', 'y', 'yes', 'yea', 'Yeah', 'Yes'] :
infiniteguessanswer=True
numberofchances = math.inf
elif infiniteguess == ['N', 'n', 'no', 'No'] :
infiniteguessanswer=True
if infiniteguess != 'y' and infiniteguess != 'n':
print('WHY DOES THIS LOOP INFINITELY?????')     


if numberofchances < 50:
print ('alright!')
infiniteguessanswer=True

except:
print('ok')

用户输入不能等于整个列表中,您需要检查是否包含

infiniteguess in ['Y', 'y', 'yes', 'yea', 'Yeah', 'Yes']
infiniteguess in ['N', 'n', 'no', 'No']

while循环检查任何值,但不特定于值的类型,这就是为什么它循环不管值;所以不要用:while not infiniteguessanswer当infinitguessanswer为True或False时:然后执行循环或使用成员测试来检查值是否为可接受的值,就像这里使用https://www.tutorialspoint.com/python/membership_operators_example.htm一样。我刚刚在下面的示例中编辑了您的代码:

While infiniteguessanswer in ['Y', 'y', 'yes', 'yea', 'Yeah', 'Yes', 'N', 'n', 'no', 'No']:
try:
if numberofchances > 50:
infiniteguess = input('it seems the number you put it is very high! would you just like infinite guesses instead? Y/Nn')
if infiniteguess in ['Y', 'y', 'yes', 'yea', 'Yeah', 'Yes'] :
infiniteguessanswer = True
numberofchances = math.inf
elif infiniteguess in ['N', 'n', 'no', 'No'] :
infiniteguessanswer=True
if infiniteguess != 'y' and infiniteguess != 'n':
print('WHY DOES THIS LOOP INFINITELY?????')     


if numberofchances < 50:
print ('alright!')
infiniteguessanswer=True
except:
print('ok')

在循环开始之前,您必须为infinitguessanswer请求一个值。也许是这样的:infiniteguessanswer = input('Do you want to play infinite guess loop?')

最新更新