2016-07-21 10 views
0

私は現在、学習の練習としてPythonでテキストベースの冒険をプログラミング中です。私は "ヘルプ"をグローバルコマンドにして、いつでも(本質的に)呼び出すことができるリストに値として格納したい。プレイヤーが新しい部屋に入るか、ヘルプオプションが変更されると、新しい値でhelp_commandsリストがリセットされます。しかし、何らかの理由でhelp_commandsの値を内のに更新することはできません。Python:ローカルリストに値を割り当てる

私は(Python: TypeError: 'list' object is not callable on global variable)の前に同様の質問をして、オブジェクトが私にとっての道になるかもしれないことを示唆しました。

私はPythonに若干新しく、オブジェクトは私の弱い側面の1つで、だから誰かから例を得ることができますか?

player = { 
    "name": "", 
    "gender": "", 
    "race": "", 
    "class": "", 
    "HP": 10, 
} 

# global help_commands 
help_commands = ["Save", "Quit", "Other"] 

def help(): 
    sub_help = ' | '.join(help_commands) 
    return "The following commands are avalible: " + sub_help 


def help_test(): 
    print help() 
    help_commands = ["Exit [direction], Open [object], Talk to [Person], Use [Item]"] 
    print help() 
    print "Before we go any further, I'd like to know a little more about you." 
    print "What is your name, young adventurer?" 
    player_name = raw_input(">> ").lower() 
    if player_name == "help": 
     help() 
    else: 
     player['name'] = player_name 
     print "It is nice to meet you, ", player['name'] + "." 

help_test() 

答えて

0

グローバル変数と同じ名前のローカル変数を作成しています。全体的に言えば、プログラムするのにはそれほど素晴らしい方法ではありません。代わりに、グローバルヘルプオブジェクトを用意したいと思うかもしれません。いずれにしても、help_test()関数では、次のように始まります。

global(help_commands) 

そして、それが望むかどうかを確認してください。メンバ関数の内部

foo = "something" 

self.foo = "something" 

これは違いがあります....あまりにも、オブジェクトで行われます。あなたがビジュアルベーシックのようなものから来ているのであれば、これらのようなコンセプトはあなたを甘やかすでしょう(幸運にも私は別の方法を使い、VBで頭を振るだけです)。

+0

VBは多くの人から頭が揺れていると思います。ご協力ありがとうございました! –