2つのダイスを保持することを選択すると、必ずしもそのスクリプトに従うとは限りません。それはおよそ50行目で起こります。時々、リストを印刷することさえありません。 (誰かがコードを単純化することができればそれで大いに感謝します) 誰かが解決策と問題の原因を助けることができます。 (スクリプトは以下の通りです)2つの整数ダイスを保持したときのPythonの時折リストインデックスエラー
import random
points = 0
final = []
print("Welcome to Yahtzee")
print("Where there are closed questions answer lower case with 'y' or n'")
print("Please be aware that this a variation of the traditional game.\nShould you hold a number- you cannot 'unhold' it.\nIt has been added to your final roll for the round.")
print("Do not be tempted to hold onto a number you haven't rolled\n- this will not work and won't be added to your final score")
def roll_dice():
global collection
collection = []
input("Press Enter to roll the first die")
die_1 = random.randint(1,6)
collection.append(die_1)
print(die_1)
input("Press Enter to roll the second die")
die_2 = random.randint(1,6)
collection.append(die_2)
print(die_2)
input("Press Enter to roll the third die")
die_3 = random.randint(1,6)
collection.append(die_3)
print(die_3)
input("Press Enter to roll the fourth die")
die_4 = random.randint(1,6)
collection.append(die_4)
print(die_4)
input("Press Enter to roll the fifth die")
die_5 = random.randint(1,6)
collection.append(die_5)
print(die_5)
roll_dice()
print(collection)
yeno = input("Would you like to hold any dice? ")
if yeno == "n":
input("This will mean re-rolling all the dice: proceeding...")
del(collection)
roll_dice()
print(collection)
elif yeno == "y":
no = input("How many dice would you like to hold: ")
if no == "1":
num1 = input("Enter the number you would like to keep: ")
num1 = int(num1)
for x in range(len(collection)-1):
if collection[x] == num1:
final.append(num1)
del(collection[x])
print(collection)
print(final)
if no == "2":
num2 = input("Enter the first number you would like to keep: ")
num2 = int(num2)
num3 = input("Enter the second number you would like to keep: ")
num3 = int(num3)
for x in range(len(collection)-1):
if collection[x] == num2:
final.append(num2)
del(collection[x])
for x in range(len(collection)-1):
if collection[x] == num3:
final.append(num3)
del(collection[x])
print(collection)
print(final)
2つのダイスを持っているとはどういう意味ですか?私はちょうどあなたのプログラムを走らせました。そして私はenterを押している間、私に5つの乱数のリストを印刷しました。 – alDiablo
プログラムはyahtzeeのゲームを表します:あなたはサイコロを5回賭けます。残念ながら、私はそれを続ける前にエラーが発生しました。明らかにあなたは5つのサイコロの任意の番号を保持することができますが、私は2つのサイコロの結果をコーディングしているだけです。 – Seb
現在は1度だけロールします。だから、あなたはいくつのサイコロを保持するかを決めるとどうなりますか? – FredrikHedman