简体   繁体   English

为什么在我的 Python 代码 Cows and Bulls 中出现“IndexError: list index out of range”?

[英]Why do I get "IndexError: list index out of range" in my Python code Cows and Bulls?

I am trying to write a Cows and Bulls game on my own.我正在尝试自己编写Cows and Bulls游戏。 Since yesterday I am getting an IndexError: list index out of range error and I can't figure out what is wrong.从昨天开始,我收到一个IndexError: list index out of range错误,我不知道出了什么问题。 I know there are better solutions, but can anyone review my code?我知道有更好的解决方案,但是有人可以查看我的代码吗?

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))      

output:输出:

[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

it's because users_number and random_number don't have the same tail.这是因为 users_number 和 random_number 没有相同的尾巴。 so i goes from 0 to a number greater than len(users_number) which gives this error所以我从 0 到一个大于 len(users_number) 的数字,这给出了这个错误

Because here for i in range(len(random_number)) your range value is already calculated and is constant.因为这里for i in range(len(random_number))你的range值已经计算出来并且是常数。 But here random_number.pop(i) you reduce the size of list.但是在这里random_number.pop(i)你减少了列表的大小。 So you end up with more iterations than current list length.所以你最终会得到比当前列表长度更多的迭代。 And when your i passes the random_number length, you get IndexError when trying to access values with random_number[i]当您的i传递random_number长度时,尝试使用random_number[i]访问值时会出现IndexError

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么会出现“ IndexError:列表索引超出范围”错误? - Why do I get a “IndexError: list index out of range” error? 为什么我得到 IndexError: list assignment index out of range - why do i get the IndexError: list assignment index out of range 为什么我得到 IndexError: list index out of range - Why do I get IndexError: list index out of range 为什么我得到一个 IndexError: list index out of range - Why do I get an IndexError: list index out of range 为什么我的 Python 代码得到 IndexError: list index out of range - Why did my Python code get the IndexError: list index out of range 当我的代码似乎在范围内时,为什么会出现 IndexError: list index out of range? - Why am I getting an IndexError: list index out of range when my code appears to be within the range? 尝试从except块中的列表中删除记录时,为什么会出现“ IndexError:列表索引超出范围” - Why do I get an 'IndexError: list index out of range' when I try to remove a record from my list in the except block 为什么在此代码中出现IndexError:list index超出范围? - Why am I getting IndexError: list index out of range in this code? IndexError:python 代码中的列表索引超出范围 - IndexError:list index out of range in python code IndexError:在 python 代码中列出超出范围的索引 - IndexError: list index out of range on python code
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM