在Python脚本的最开始,我已经定义了很多变量。例如:
cmd_attack = "attack"
cmd_protect = "protect"
cmd_help = "help"
cmd_help适用于此处显示的用户菜单功能:
def usermenu():
um_in=raw_input('Menu :: ')
#Help Command
if um_in.lower()==cmd_help.lower():
print(helplist)
usermenu()
这很成功 - 它会打印帮助列表,然后返回原始输入。但是,当我在另一个函数中执行类似涉及cmd_help的事情时......
def tf_elf_battle_merc():
battleinput==raw_input('Elf :: ')
global cmd_help
global cmd_attack
global cmd_protect
if battleinput.lower()==cmd_attack.lower():
attack_merc()
elif battleinput.lower()==cmd_help.lower():
print(tf_elf_help)
它什么都不做,不打印任何错误,并返回到shell行 - 不打印任何东西或去任何地方。我使用全局命令,因为我正在测试问题的可能解决方案。 放入它们的顺序是顶部的CMD函数,中间的tf_elf_battle_merc()和最后的usermenu()。我尝试了一些事情,相关的问题没有帮助......任何想法?我是Python的新手。如果你很好奇,那就是你可以登录并玩文字类型游戏的脚本。
The full script is here on Pastebin.
提前谢谢!
编辑:如果您下载并运行脚本 - 使用“Guest”(区分大小写)作为用户名,您将被允许使用
答案 0 :(得分:2)
将battleinput==raw_input('Elf :: ')
更改为battleinput=raw_input('Elf ::')
后,您的代码(带有一些编辑,如下所示)对我来说很好,您不想比较它们,您想要定义battleinput
。
但是,它应该引发错误,因为battleinput
未定义,但您正在尝试比较它:if battleinput.lower() == ...
。
你还在混合Python 3和Python 2吗?使用Python 2中的raw_input()
,而来自Python 3的print("asd")
,而不是Python 2的print "asd"
?
一切看起来都没有达到您的代码,问题出在其他地方。
这是Python 3的代码,可以正常工作:
cmd_attack = "attack"
cmd_protect = "protect"
cmd_help = "help"
def tf_elf_battle_merc():
battleinput=input('Elf :: ') # Use raw_input() for Python 2
# You don't need the globals here
if battleinput.lower()==cmd_attack.lower():
print("attack")
elif battleinput.lower()==cmd_help.lower():
print("help")
tf_elf_battle_merc()