2016-06-17 5 views
0

(それは私が最初のコードを表示する場合を説明する方が簡単です)なぜリスト[0]の代わりにリスト[-1]からこのリストの要素を数え始めますか? (Pythonの3)

import random 
inventory = 100 
while True: 
    print('inventory: $' + str(inventory)) 
    print('how much do you wager?') 
    wager = input() 
    keys = ['a', 'b'] 
    cA = random.sample(keys, 1) 
    print('pick "a" or "b"') 
    guess = input() 
    if guess == cA[0] 
     inventory += int(wager) 
    elif guess == cA[1]: # <--------------- 
     inventory -= int(wager) 
    else: 
     print('ERROR') 

だから私はこの非常に単純な推測/ギャンブルゲームを作ったが、私は実行したときには、CAが[1]であると述べましたリストが[0]、リスト[1]などから数えてくるとわかっているので、混乱していました。
その後、cA [1 ]をcA [-1]に変換し、それは手紙を返す。奇妙なことに(と思う)私は

print(keys[1]) 

に追加したとき、それは予想通り「b」を返しましたので、キーは[1]のcAに過ぎず存在する理由私は理解していない[1]ないないときのキーとCAの両方2つの要素を持つ。なぜこれを行い、それを修正/変更する方法がありますか?

+0

それは私の問題だと気づいたよ。 – zeurosis

答えて

4

あなたのリストには、その中にだけ要素があります。

cA = random.sample(keys, 1) 

をあなたはそれが最後までインデックス相対的であるために動作し-1長さのランダムなサンプル1

を求めました。長さ1のリストでは、listobj[-1]listobj[0]と同じオブジェクトです。最後の要素も最初の要素です。

keysは要素ので、keys[0]との両方が存在するkeys[1]付きリストです。

+1

また、負のインデックスは、リストの末尾から数え上げるためのPythonの規約です。 'a = [1,2,3]'を指定すると、 'a [-1]'は3です。あなたのリストには1つの項目しかないので、 'a [-1]'はその項目です。 'a [0]'。 –

+0

あなたの答えを公平に編集して、私がMartijnについてのコメントを書いている途中です。 :) –

+1

@ MarkReed:申し訳ありませんが、私はいつも編集して編集します。 –

0
import random 
inventory = 100 
while True: 
    print('inventory: $' + str(inventory)) 
    print('how much do you wager?') 
    wager = input() 
    keys = ['a', 'b'] 
    cA = random.sample(keys, 1) 
    print('pick "a" or "b"') 
    guess = input() 
    if guess == cA  <------------ cA has the element that is the correct wager 
     inventory += int(wager)  
    else: 
     inventory -= int(wager) 

私はそれがあなたの望むものだと思います。

+0

実際に(Martijn Pietersが指摘したように)私の問題は、私が置くべきだったときにcA = random.sample(keys、1)を置くことでした。しかし、私はそれが欲しかったので実際にキーの代わりにcAを使用しましたランダム(したがって推測)ですが、ありがとう – zeurosis

+0

ああ、私はあなたがそれを変更したことを参照してください、良いアイデアありがとう – zeurosis

+1

ええ、それについて申し訳ありません。私の朝のコーヒーをまだ飲んでいます:) –

関連する問題