48704


Pythonでrandom関数を使ったじゃんけんプログラムを作っています。  
その中で今までの勝ち負け引き分けのそれぞれ合計を出す部分が

[code]

    Index Error : Taple index out of range 
    
[/code]

というエラーを出していてその解決法が分かりません。

どなたかご指導お願いします。

[code]

    # じゃんけんゲーム
    import random
    
    hand = ["グー", "チョキ", "パー", "ゲーム終了"]
    
    win = 0
    lose = 0
    draw = 0
    time = 0
    
    print("===じゃんけんしましょう===")
    
    while True:
    
        com = random.randint(0,2)
        for i, desc in enumerate(hand):
            print(i, ":", desc)
        you  = int(input("出す手を数値で入力: "))
    
        time += 1                       # 試行回数
    
        if you == 3: break
        if you < 0 or you > 2:
            print("0から3の間で入力してね")
            continue
    
        print("---")
        print("自分 : ", hand[you])
        print("相手 : ", hand[com])
        input("---")
    
        j = (you - com + 3) % 3
        if j == 0:
            print("あいこ")
            draw += 1               # 引き分けた回数
        elif j == 1:
            print("負け...")
            lose += 1               # 負けた回数
        elif j == 2:
            print("勝ち!!!")
            win += 1                # 勝った回数
        input("---")
    
        rate = win / time
        print("現在の勝率 : ", rate)     # 勝率
        s = win, "勝", lose, "敗", draw, "分"       #内訳。ここはエラーなし
        print(s)
        s2 = "{1}勝ち{2}負け{3}分け".format(win, lose, draw) # Tuple index out of range と出る
        print(s2)
        input("---")
    
[/code]


CC BY-SA 4.0
2018-09-24T14:52:20.380
48681
2021-01-03T06:05:58.513
2018-09-24T16:33:08.730
3060
27172
question
python python3
Python で tuple index out of range というエラーが出る


"{1}勝ち{2}負け{3}分け"ではなく、"{0}勝ち{1}負け{2}分け"とすればうまくいきます。  
0オリジンで、タプルとしては3つしか与えていないのに、3つまりは4番目の値を入れようとして、その値が見つからないという意味です。  
win:0番目  
lose: 1番目  
draw: 2番目

試しに、

[code]

    >>> "{1}勝ち{2}負け{3}分け".format(1,2,3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: tuple index out of range
    >>> "{0}勝ち{1}負け{2}分け".format(1,2,3)
    '1勝ち2負け3分け'
    >>>
    
[/code]

正しく動作するようになります。


CC BY-SA 4.0
2018-09-25T16:36:38.590
48704
2018-09-25T16:36:38.590
10174
48681
answer