gpt4 book ai didi

python - 如何停止Python中的While循环? (我尝试过使用中断)

转载 作者:行者123 更新时间:2023-12-01 01:39:11 27 4
gpt4 key购买 nike

这是我第一篇关于编程的文章!伙计们,当我执行这个算法(猜谜游戏)时,它不会停止要求我提供更多输入,即使当我写“退出”时,这应该是退出词。 “中断”命令不起作用,我不知道为什么。也许它有效,但是当它退出循环时,它会执行底部的“startgame()”,但我需要底部的这个“startgame()”来使游戏第一次运行,因为游戏在里面一个函数,我需要调用它来开始游戏。

import random

def startgame():
a = random.randint (1,10)
cont = 0

while True:
b = input("Guess a number: ")
if b == 'quit':
break
elif int(b) > a:
print("Too high!")
cont += 1
True
elif int(b) < a:
print ("Too low!")
cont += 1
True
elif int(b) == a:
print ("You got it right!")
print ('You needed ',cont,'guesses!')
startgame()

startgame()

关于如何解决这个问题有什么想法吗?

最佳答案

您的代码有一些小问题,但它确实有效,只是您没有进行足够的测试来发现实际问题。

问题:

  • True 行不执行任何操作,while 循环不需要它们; while 将评估紧随其后的 True 并永远循环。
  • 您在字符串中混合使用单引号和双引号 - 这会很难阅读并且很快就会令人困惑,因此您最好使用一种样式,最好是 PEP8 推荐的样式。 https://www.python.org/dev/peps/pep-0008/

问题:

  • 你的break工作得很好;尝试运行脚本并在第一个提示时输入“quit”,它会按预期退出。
  • 它似乎不起作用的原因是您在赢得游戏后再次调用 startgame 函数来重新启动整个游戏。这会导致游戏内发生新的嵌套调用(想想“盗梦空间”),并且当游戏中断时,它最终会回到上一个关卡。

解决方案是删除对 startgame() 的调用,然后在一秒钟内包装整个事情,例如如下所示:

import random


def startgame():
b = 0
while b != 'quit':
a = random.randint(1, 10)
cont = 0

while True:
b = input('Guess a number: ')
if b == 'quit':
break
elif int(b) > a:
print('Too high!')
cont += 1
elif int(b) < a:
print('Too low!')
cont += 1
elif int(b) == a:
print('You got it right!')
print('You needed ', cont, 'guesses!')


startgame()

关于python - 如何停止Python中的While循环? (我尝试过使用中断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com