如何在python中停止While循环?(我尝试过使用break)
这是我第一篇关于编程的帖子! 伙计们,当我执行这个算法(一个猜谜游戏)时,它不会停止要求我更多的输入,甚至当我写“退出”时,这应该是退出的词。“中断”命令不起作用,我也不知道为什么。也许它能工作,但当它退出循环时,它会执行底部的“startName()”,但我需要底部的这个“startName()”,使游戏第一次运行,因为游戏在一个函数中,我需要调用它来启动游戏如何在python中停止While循环?(我尝试过使用break),python,loops,while-loop,break,Python,Loops,While Loop,Break,这是我第一篇关于编程的帖子! 伙计们,当我执行这个算法(一个猜谜游戏)时,它不会停止要求我更多的输入,甚至当我写“退出”时,这应该是退出的词。“中断”命令不起作用,我也不知道为什么。也许它能工作,但当它退出循环时,它会执行底部的“startName()”,但我需要底部的这个“startName()”,使游戏第一次运行,因为游戏在一个函数中,我需要调用它来启动游戏 import random def startgame(): a = random.randint (1,10) c
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()
随机导入
def startgame():
a=random.randint(1,10)
cont=0
尽管如此:
b=输入(“猜一个数字:”)
如果b==‘退出’:
打破
elif int(b)>a:
打印(“太高!”)
cont+=1
真的
elif int(b)
关于如何解决这个问题有什么想法吗?只需从循环内部移除startName(),然后用break替换它
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
elif int(b) < a:
print ("Too low!")
cont += 1
elif int(b) == a:
print ("You got it right!")
print ('You needed ',cont,'guesses!')
break # remove this break statement if you want to restart it again after winning
startgame ()
随机导入
def startgame():
a=random.randint(1,10)
cont=0
尽管如此:
b=输入(“猜一个数字:”)
如果b==‘退出’:
打破
elif int(b)>a:
打印(“太高!”)
cont+=1
elif int(b)
您的代码有一些小问题,但实际上是可行的,您只是没有进行足够的测试来发现实际问题
这些问题:
行没有任何作用,在True
循环中不需要它们;while
将在它之后立即计算while
,并永远循环True
- 您正在混合字符串的单引号和双引号-这很难阅读,而且很快就会混淆,所以最好使用一种样式,最好是PEP8推荐的样式李>
- 您的
工作正常;尝试运行脚本并在第一次提示时输入'quit',它将按预期退出中断
- 它似乎不起作用的原因是,您在赢得游戏后再次调用
函数重新启动了整个游戏。这会在游戏中产生一个新的嵌套调用(想想“Inception”),当游戏中断时,它会在上一个级别结束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()
随机导入
def startgame():
b=0
而b!='退出':
a=random.randint(1,10)
cont=0
尽管如此:
b=输入('猜一个数字:')
如果b==‘退出’:
打破
elif int(b)>a:
打印('太高!')
cont+=1
elif int(b)
对于这种情况,我通常使用一个简单的控制变量并在其上运行循环。例如:
right_guess=False
while not right_guess:
然后就走吧
if guess=right:
right_guess=True
break
这会有所帮助,但会改变游戏流程,游戏在获胜后不再重新启动。如果他想在获胜后重新启动游戏,则意味着他可以删除break语句此代码在Python 2中失败。我相信这和原来的海报是一样的问题。结果是
TypeError:int()参数必须是字符串或数字,而不是“Quitter”
。我同意需要删除startgame
调用。当我执行此代码时,我会不断获取相同的随机数。有点不对@AlexTaylor认为该问题不适用于此脚本。该脚本按预期在Python2上工作。这条消息似乎表明您正在运行“Programming Python,3rd Edition”中quitter模块的代码;但是,如果从函数中删除代码,则可以删除它@RafaelSouza在Python 2中,PYTHONHASHSEED
的默认设置是禁用的。这会导致随机函数始终以相同的值开始。根据分布情况可能有所不同。自己提供一个种子(例如时间戳),以便每次都获得一个新序列。