2017-11-03 8 views
-1
player_list= {'peter':0, 'karel':0} 

naam = input("Welke speler moet een score + 1 krijgen?") 
for key, value in player_list.items(): 
    player_list[naam] = value + 1 

print(player_list) 

私は "ピーター"と入力したときに正しい値を得ても、 "カレル"と入力しないと誰かが私に説明することができますか?なぜ値が間違っていますか?

+0

なぜ全プレイヤーで繰り返しますか? – jonrsharpe

+0

正しい値が何であるか説明していません。さらに、ここで尋ねる前に、コード内の個々の部分が何をしているのかを理解しておく必要があります。また、コードが非常に短いため、これを理解したことになります。すべて – jonatan

答えて

1

私はあなたがinputでユーザーが提供する文字列と同じキーのdict値を増やしたいとします。そのようなことをするには、dict項目を繰り返し処理する必要がありますか? Dictはキー値構造であり、このキーを直接提供するたびにキーの値にアクセスできます。

>>> player_list = {'peter':0, 'karel':0} 
>>> player_list['peter'] 
0 

既存のdictキーへの設定は簡単です。

>>> player_list['peter'] = 3 
>>> player_list['peter'] 
3 

あなたが「ピーターの下に格納されているものは何でも取ると1を追加する必要がピーター 'の値をインクリメントしたい場合は、しかし、辞書を反復する必要はありません:すべてを行う必要がありますそれを行うための項目。他の変数と同様に、dict要素は、そのプレースホルダを介してアクセスできるメモリのスペースのための一種のプレースホルダです。だからあなたのように何かをしたい任意の変数の場合:

>>> x = 1 
>>> x = x + 1 # or x += 1 for short 

...とdictの素子の場合には、あなたが同じことを行うことができます。

>>> player_list['peter'] = player_list['peter'] + 1 # or: 
>>> player_list['peter'] += 1 

あなたは好奇心旺盛であれば、なぜあなた現在のコードは、あなたが期待どおりに動作し、デバッガを使用してコードを実行したり、単に印刷機能を追加しません:

for key, value in player_list.items(): 
    print("Current key: {}, current value: {}".format(key, value)) 
    player_list[naam] = value + 1 

実際には、それはあなたが知らない時はいつでもあなたのコードの実行がある理由をいくつかのデバッグツールを使用することは常に良いことですあなたの期待とは異なるエフェクト結果

+0

すばらしい説明をありがとう。私は別のstackoverflowの質問からコードをコピーし、私はそれが正しい方法だと思った。 –

関連する問題