Python 为什么我总是得到;正在关闭……”;作为一个输出,无论什么?

Python 为什么我总是得到;正在关闭……”;作为一个输出,无论什么?,python,if-statement,while-loop,Python,If Statement,While Loop,我正在尝试创建一个基于文本的迷你游戏。对于加载屏幕的代码,无论我输入什么,我都会得到“关机…”我做错了什么 import random import sys def characterCreation(): gender = raw_input("Please enter your gender: ") name = raw_input("Please enter your name: ") age = raw_input("Please enter your age:

我正在尝试创建一个基于文本的迷你游戏。对于加载屏幕的代码,无论我输入什么,我都会得到“关机…”我做错了什么

import random
import sys
def characterCreation():
    gender = raw_input("Please enter your gender: ")
    name = raw_input("Please enter your name: ")
    age = raw_input("Please enter your age: ")
def loadingScreen():
    option = raw_input("Welcome to Riften! Type either 'Play Game' or 'Quit' to procede!: ")
    option = str(option)
    if option == "Quit" or "quit" :
        sys.exit('Shutting down...')
    elif option == "Play Game" or "Play game" or "play Game" or "play game":
        characterCreation()
    else:
        while option != "Quit" or "quit" or "Play Game" or "Play game" or "play Game" or "play game":
            print("Please choose a valid option.: ")
            option = raw_input("Type either 'Play Game' or 'Quit' to procede!: ")
loadingScreen()
我想让它,如果用户输入任何大写的“退出”,程序退出。如果用户输入“玩游戏”,游戏将继续进入角色创建屏幕,如果用户输入任何其他内容,则要求输入“玩游戏”或“退出”,直到给出


谢谢

您需要在比较的每一部分中重申变量名称

如果option==“Quit”或“Quit”,则行
if(option==“Quit”)或“Quit”
基本上被括起来。字符串
“quit”
的计算结果总是
true
,因为它是真实的。因此,整个表达式的计算结果为
true
,您的条件得到满足

要更正此问题,您需要将
选项添加到比较的后半部分:
如果选项==“退出”或选项==“退出”:

while循环也是如此,只是您实际上希望使用
,因为您不希望
选项
等于指定的任何值:
while选项!=“退出”和选项!=“退出”和选项!=“玩游戏”和选项!=“玩游戏”和选项!=“玩游戏”和选项!=“玩游戏”:


如果在
while
循环中使用
,则会出现类似问题;共同定义的每一部分都将被独立评估,如果其中任何一部分都得到满足,那么整个条件都将得到满足。也就是说,如果
选项
退出
,第一个否定检查(
选项!=退出
)将失败,但第二个检查(
选项!=退出
)将通过,因为
退出
不等于
退出
。对于
语句,第一部分是否已经阻止了它并不重要。使用
语句,它确实会这样做,因为所有的组件都必须计算为
true

简短回答:使用
是错误的。代码复查:使用
选项。lower()==“quit”
将更好地处理带有“任意大写”的输入。这有一个免费的好处,那就是避免那些看起来让你困惑的
语句。我会使用“truthy”这个词,而不是“defined”。有很多方法可以让某些东西被定义为虚假的…@Shadow——肯定;我已经更新了:)