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)

それは何もせず、エラーを出力せず、何も出力せず、どこにも行かずにシェル行に戻ります。問題の可能な解決策をテストしていたので、グローバル コマンドを使用しました。これらを配置する順序は、上部に CMD 関数、中央に tf_elf_battle_merc()、最後に usermenu() です。私はいくつかのことを試しましたが、関連する質問は役に立ちませんでした...何か考えはありますか? 私はPythonが初めてです。興味のある方は、ログインしてテキストタイプのゲームをプレイできるスクリプトです。

完全なスクリプトは Pastebin にあります。

前もって感謝します!

編集:スクリプトをダウンロードして実行する場合-ユーザー名として「ゲスト」(大文字と小文字を区別)を使用すると、スクリプトに入ることができます

4

1 に答える 1

2

あなたのコード(以下に示すいくつかの編集を含む)は、に変更battleinput==raw_input('Elf :: ')した後、私にとってはうまく機能しました。battleinput=raw_input('Elf ::')それらを比較したくないので、定義したいのですbattleinput

battleinputただし、は定義されていませんが、それを比較しようとしているため、そのエラーが発生するはずです: if battleinput.lower() == ...

また、Python 3 と Python 2 を混在させていますか? Python 2 の代わりに Python 2 から、まだ Python 3からraw_input()使用するprint("asd")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 に答える