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

标签 python loops while-loop break

这是我第一篇关于编程的文章! 伙计们,当我执行这个算法(猜谜游戏)时,它不会停止要求我提供更多输入,即使当我写“退出”时,这应该是退出词。 “中断”命令不起作用,我不知道为什么。也许它有效,但是当它退出循环时,它会执行底部的“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/

相关文章:

Php mail() 使用表从数据库发送数据

python - 使用 (.|\s)* 后仅返回一个匹配项

python - 使用键作为标题和值作为列将字典写入 csv 时出现问题

php - 停止 PHP while 循环然后继续吗?

shell - 如何循环脚本直到用户输入为空?

Java Hangman 无法正确循环

python - 导入错误 : No module named db when using chatterbot

python - 如何将项目 append 到 Pandas 中不同列的列表

javascript - 只能发布 while 循环的第一个结果

java - 我的 while 循环中的此开关遇到问题