为什么无论如何我都会不断收到“正在关闭...”作为输出?

时间:2018-09-26 02:26:54

标签: 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: ")
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()

我想让它在用户以任何大写字母输入“ quit”的地方退出。如果用户输入“玩游戏”,游戏将继续到角色创建屏幕,并且如果用户输入了其他内容,则要求输入“玩游戏”或“退出”直到给出

谢谢

1 个答案:

答案 0 :(得分:2)

您需要在比较的每个部分中重新声明变量名称。

您的行if option == "Quit" or "quit" :实际上被括在
if (option == "Quit") or "quit"中。字符串"quit"的总值为true,因为它是真实的。因此,整个表达式的计算结果为true,并且您的条件得到满足。

要解决此问题,您需要在比较的后半部分添加option
if option == "Quit" or option == "quit" :

while循环也是如此,只是您实际上会 要使用and,因为您不希望option等于任何指定的值:
while option != "Quit" and option != "quit" and option != "Play Game" and option != "Play game" and option != "play Game" and option != "play game":

如果您要在or循环中使用while,则会发生类似的问题。编码的每个部分都将被独立评估,如果满足这些条件中的任何一个,则将满足整个条件。也就是说,如果optionQuit,则第一个否定检查(option != Quit)将失败,而第二个否定检查(option != quit)将通过,{{1 }}不等于Quit。使用quit语句,第一部分已经阻止了该语句并不重要。有了or语句,因为所有组件都必须评估为and