我遇到以下代码的问题。这应该是基于小文本的游戏的开始。我想接受用户输入然后输出消息(例如帮助菜单或游戏的开始)。
std
我的问题是输入变量被评估为字面上的任何东西。例如,行
def start (): # This runs when the program starts
print("THE LAST RANGER")
print ("Type Start to Begin")
print ("Type About for Credits")
print ("Type Help for Instructions")
prompt_start()
def Waking_up(): # This should run when the user enters "Start"
print ("SIR... Sir. We need to get you out of here, come on.")
def About(): #This should run when the user enters "About"
print ("Welcome to THE LAST RANGER created by Michael Frazer.")
#add more to this at some point
def Help(): #This should run when the user enters "Help"
print ("This is the help menu")
def prompt_start(): #This function takes the users input
global input_0
input_0 = input()
start () #This runs the "start" function defined in the first lines
if input_0 == "Start" or "start": #These should evaluate the users input
Waking_up ()
elif input_0 == "About" or "about":
About ()
elif input_0 == "Help" or "help":
Help ()
else:
print ("Enter Valid Command")
运行" Waking_up"即使输入不等于"开始"也起作用。如果用户输入类似"帮助"的内容,该程序似乎认为"帮助"等于"开始"并运行唤醒功能。我试图和3个朋友一起调试这个问题,但我们都没有想法。谢谢你的帮助。
答案 0 :(得分:1)
"开始"正在评估为真,因为你没有完整的表达。尝试:
height: 100%;
答案 1 :(得分:0)
只需更改以下内容:
if input_0 == "Start" or input_0 == "start":
Waking_up ()
elif input_0 == "About" or input_0 =="about":
About ()
elif input_0 == "Help" or input_0 == "help":
Help ()
else:
print ("Enter Valid Command")
这将按您的意愿工作,并且只会评估相应的输入而不是"开始"每时每刻。
根据您对该程序的操作,请考虑过滤用户的输入(例如将输入字符串转换为.lower()
并仅使用if/elif/else
命令接受小写输入 - 可以节省你一些时间。只是来自同伴python新手的建议。