1

在 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 有点陌生。如果您很好奇,它是您可以登录并玩文本类型游戏的脚本。

完整的脚本在 Pastebin 上。

先感谢您!

编辑:如果您下载并运行脚本 - 使用“Guest”(区分大小写)作为用户名,您将被允许进入它

4

1 回答 1

2

battleinput==raw_input('Elf :: ')更改为后,您的代码(进行了一些编辑,如下所示)对我来说效果很好battleinput=raw_input('Elf ::'),您不想比较它们,而是想定义battleinput.

但是,它应该会引发错误,因为battleinput未定义,但您正在尝试比较它:if battleinput.lower() == ....

你也在混合 Python 3 和 Python 2 吗?raw_input()从 Python 2开始使用,print("asd")但从 Python 3 开始,而不是 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()
于 2012-12-01T19:40:24.147 回答