变量被评估为任何东西

时间:2015-11-25 18:41:38

标签: variables python-3.x

我遇到以下代码的问题。这应该是基于小文本的游戏的开始。我想接受用户输入然后输出消息(例如帮助菜单或游戏的开始)。

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个朋友一起调试这个问题,但我们都没有想法。谢谢你的帮助。

2 个答案:

答案 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新手的建议。