当前位置: 首页 > 知识库问答 >
问题:

我的python代码有错误,但只是在try-除循环中。[重复]

罗毅
2023-03-14

我的python代码有一些错误,在try除了循环。如果您输入的输入不是是或否,它会首先打印“是”回答输出,然后一旦您回答了问题,如果您不输入是或否,它会显示输出。这是代码:

playAgain = None

while playAgain != "Yes" or "No" or "yes" or "no" or "y" or "n":
    try:
            playAgain = str(input("Do you want to play again? Enter Yes or No: "))         
            if playAgain == "Yes" or "y" or "yes":
                displayIntro()
            elif playAgain == "No" or "no" or "n":
                print("Oh, well. The magic 8 ball will see you next time...")
                sys.exit()
    except:
                print("That wasn't yes or no, idiot. The magic 8 ball will not give a fortune to such an imbocile.")

请帮忙,谢谢!

共有1个答案

诸新霁
2023-03-14
playAgain != "Yes" or "No" or "yes" or "no" or "y" or "n"

不是正确的方法。

当你说play的时候!="Yes"然后您需要对剩余的表达式执行相同的操作。因此,一个有效的方法来做你打算做的事情是:

playAgain != "Yes" or playAgain != "No" or playAgain != "yes" or playAgain != "no" or playAgain != "y" or playAgain != "n"

但这太难看了,太长了。

相反,使用

playAgain not in ["Yes", "No", "yes", "no", "y", "n"]

在Python中,我们有一些方便的方法来处理此类问题。您可以使用中的运算符检查可能值列表中是否存在(或不存在)有问题的字符串。读起来也很不错:“如果playreach(is)不在[这个值列表]”。

您甚至可以操纵输入,以便更容易使用。也就是说,您降低了所有字母,并且不检查区分大小写的输入(如果您真的不关心区分大小写的输入;您真的关心是Yes还是Yes?):

playAgain.lower() not in ["yes", "y"]

像这样的事情应该做:

while True:
    playAgain = str(input("Do you want to play again? Enter Yes or No: "))         

    if playAgain.lower() in ["yes", "y"]:
        # do something with your yes input. Consider `break` out of the endless loop.
    elif playAgain.lower() in ["no", "n"]:
        # do something with your no input. Consider `break` out of the endless loop.
    else:
        print("That wasn't yes or no.")

注意,上面的循环是无止境的。您需要根据您的程序逻辑进行中断。也就是说,当你需要打破无休止的循环时,你需要在某处放置一个break语句。

 类似资料:
  • 我的方向是编写一个代码(在java中),找到1,000到9,999(任何4位数字)之间的代码,满足四个条件: 这四个数字都不一样 千位数字是十位数字的3倍 这个数字是奇数 数字之和是27 这就是我目前所拥有的。我的部分出现错误: 是出现的错误。 在我的脑海里,

  • 我正在看freeCodeCamp的一个关于flappy bird游戏的教程https://www.youtube.com/watch?v=pufko5eg8nc 但我正在使用一个类来学习更多关于它的知识。 问题是,图像没有加载到draw()函数的循环中。如果我将drawImage()放在循环之外(像其他图像一样),那么它们就可以工作。 控制台中没有错误,for循环中的两个图像没有出现,我只是不明白

  • 我目前正在学习UdemyJava课程,并正在练习我迄今为止学到的东西。 我有以下简单的程序,我计划使用它来让用户输入他的名字。 我想让程序在用户输入空白名称时重复错误消息,而不是从头开始重新启动整个程序。 例如,当用户输入一个空白的名字时,我希望程序继续重复“请输入至少1个字符的名字”,当用户输入一个空白的姓氏时,程序继续重复“请输入至少1个字符的姓氏”,直到用户输入一个有效的名字。 然而,当前当

  • 你好,我试图跳过一些错误消息并通过将空csv写入我的工作d目录来继续循环。 问题是没有is。我知道的错误()?我不知道如何实现try()包装器来获得所需的结果。

  • 当我尝试使用命令节点文件时。js terminal show此行语法错误{导出默认函数}语法错误:意外的令牌导出 这是我的代码任何帮助,如果我删除导出我有相同的错误与默认关键字

  • 假设我有一个文件: 我想根据日期将行分隔为不同的文件。我制作了以下脚本: 当我执行时,我得到以下内容: 如果我在没有cat...行的情况下尝试,脚本会打印所有的回显命令,如果我在命令行上只尝试cat|grep命令,它就可以工作。 你知道为什么它会这样吗?