[英]Why do I get "IndexError: list index out of range" in my Python code Cows and Bulls?
我正在嘗試自己編寫Cows and Bulls游戲。 從昨天開始,我收到一個IndexError: list index out of range
錯誤,我不知道出了什么問題。 我知道有更好的解決方案,但是有人可以查看我的代碼嗎?
import random
#randomly generate 4 digitnumber
#asked the user to guess the number
#every digit gussed in the correct place they gave a "cow"
#every digit guessed correctly you get the "bull"
#one the user guessed the correct number game is over
#7 trials
def play_bull_and_cow(random_number, guess_number):
users_number = [int(x) for x in str(guess_number)]
trials = 7
while trials > 0:
if random_number == users_number:
trials -=1
return "you won, congratulations"
break
else:
bull = 0
cow = 0
for i in range(len(random_number)):
if users_number[i] == random_number[i]:
bull += 1
random_number.pop(i)
users_number.pop(i)
random_number = random_number
users_number = users_number
trials -= 1
continue
elif users_number[i] in random_number:
cow +=1
trials -=1
continue
else:
return "you have not guessed anything try again"
random_number = random.sample(range(1, 10), 4)
print(random_number)
guess_number = int(input("enter the 4 digit number: "))
print(play_bull_and_cow(random_number, guess_number))
輸出:
[5, 2, 3, 8]
enter the 4 digit number: 5237
Traceback (most recent call last):
File "C:\Users\Luiza\Desktop\try_to_understand.py", line 41, in <module>
print(play_bull_and_cow(random_number, guess_number))
File "C:\Users\Luiza\Desktop\try_to_understand.py", line 23, in play_bull_and_cow
if users_number[i] == random_number[i]:
IndexError: list index out of range
這是因為 users_number 和 random_number 沒有相同的尾巴。 所以我從 0 到一個大於 len(users_number) 的數字,這給出了這個錯誤
因為這里for i in range(len(random_number))
你的range
值已經計算出來並且是常數。 但是在這里random_number.pop(i)
你減少了列表的大小。 所以你最終會得到比當前列表長度更多的迭代。 當您的i
傳遞random_number
長度時,嘗試使用random_number[i]
訪問值時會出現IndexError
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.