我正在尝试创建一个基于文本的迷你游戏。对于我的加载屏幕上的代码,无论我输入什么内容,我都会得到“正在关机...”,这是我做错了吗?
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”的地方退出。如果用户输入“玩游戏”,游戏将继续到角色创建屏幕,并且如果用户输入了其他内容,则要求输入“玩游戏”或“退出”直到给出
谢谢
答案 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
,则会发生类似的问题。编码的每个部分都将被独立评估,如果满足这些条件中的任何一个,则将满足整个条件。也就是说,如果option
是Quit
,则第一个否定检查(option != Quit
)将失败,而第二个否定检查(option != quit
)将通过,{{1 }}不等于Quit
。使用quit
语句,第一部分已经阻止了该语句并不重要。有了or
语句,因为所有组件都必须评估为and
。