所以我最近發佈了一個簡單的骰子程序,我遇到了麻煩。它應該在一個數組中隨機生成5個數字,然後檢查是否有任何匹配值,如果存在,它將添加到MATCH中,因此一旦檢查完畢,MATCH + 1就是多少個'有'匹配= 1意味着兩種類型,匹配= 2意味着三種類型等)如何調試我的Python骰子游戲?
它隨機生成並正確顯示數字,程序似乎檢查沒有錯誤,除非最後兩個playerDice元素匹配,那麼它會拋出一個超出界限的錯誤,爲什麼它會這樣做?此外,它實際上從不顯示最後一個打印行的數量,即使它沒有錯誤,爲什麼?
下面是代碼:
import random
playerDice = [random.randint(1,6),random.randint(1,6),random.randint(1,6),random.randint(1,6),random.randint(1,6)]
compDice = [random.randint(1,6),random.randint(1,6),random.randint(1,6),random.randint(1,6),random.randint(1,6)]
match = 0
compmatch = 0
#print player dice
print("You rolled: ",end=" ")
a = 0
while a < len(playerDice):
print(str(playerDice[a]) + ", ",end=" ")
a = a + 1
#player check matches
i = 0
while i < len(playerDice):
j = i + 1
if playerDice[i] == playerDice[j]:
match = match + 1
while playerDice[i] != playerDice[j]:
j = j + 1
if playerDice[i] == playerDice[j]:
match = match + 1
i = i + 1
print("Player has: " + str(match + 1) + " of a kind.")
我不認爲你有足夠的邊界檢查'j'。 –
如果玩家在同一時間滾動某種類似'[1,1,2,2,2]'的東西,一種和三種類似的東西,你希望程序做什麼?順便說一句,有更好的方法來組織和編寫此代碼... –
行'j = i + 1'將始終導致循環的最後一次迭代的索引錯誤。另外,'i = i + 1'需要在循環中。沒有這個,循環將永遠旋轉,這就是爲什麼最後一行永遠不會執行。 – ekhumoro