python-2.7 - 如何修复“列表索引超出范围”错误?
问题描述
我不断收到“ list index out of range
”错误。我一直在尝试谷歌一个解决方案,但我找不到任何适合我的问题的东西。
我尝试使用其他随机的东西,比如random.shuffle()
and randint()
。
import random
svart = [18,28,38,58,68,78,88,47,46,45,44,43,42,41,37,26,15,57,66,75,84]
vit = [11,21,31,51,61,71,81,42,43,44,45,46,47,48,32,23,14,52,63,74,85]
def schack(svart,vit):
hit = 0
miss = 0
for i in range(10000):
random.choice(svart)
random.choice(vit)
if svart == vit:
i = i + 1
elif svart[18] == vit[11]:
hit += 1
elif svart[28] == vit[21]:
hit += 1
elif svart[38] == vit[31]:
hit += 1
elif svart[58] == vit[51]:
hit += 1
elif svart[68] == vit[61]:
hit += 1
elif svart[78] == vit[71]:
hit += 1
elif svart[88] == vit[81]:
hit += 1
elif svart[7,46,45,44,43,42,41] == vit[42,43,44,45,46,47,48]:
hit += 1
elif svart[37] == vit[31,47,32]:
hit += 1
elif svart[26] == vit[21,23,46]:
hit += 1
elif svart[15] == vit[11,45,14]:
hit += 1
elif svart[57] == vit[51,52,47]:
hit += 1
elif svart[66] == vit[46,61,63]:
hit += 1
elif svart[75] == vit[71,45,74]:
hit += 1
elif svart[84] == vit[81,44,85]:
hit += 1
elif svart[38,37,42] == vit[32]:
hit += 1
elif svart[28,43,26] == vit[23]:
hit += 1
elif svart[18,15,44] == vit[14]:
hit += 1
elif svart[58,42,57] == vit[52]:
hit += 1
elif svart[68,43,66] == vit[63]:
hit += 1
elif svart[78,44,75] == vit[74]:
hit += 1
elif svart[84,88,45] == vit[85]:
hit += 1
else:
miss += 1
print hit
print miss
schack(svart,vit)
这是一个所谓的国际象棋模拟器,它将取一个值并比较两个列表中的数字。如果数字“相互威胁”,将加分。如果两个值相同,则不会记录命中或未命中并添加额外的循环转弯。
我不知道我是否错误地比较了这些值或者我做错了什么。
任何帮助将不胜感激。
解决方案
下面给出了列表“svart”的第 29 个元素:
svart[28]
但该列表只有 21 个元素。因此,您正在访问可能范围之外的元素。这就是为什么您会收到“列表索引超出范围”错误的原因。
推荐阅读
- java - 如何在 Java、Hibernate 中修复“无法找到具有逻辑名称的列”
- ios - 检测代码是否在 Framework vs. App vs. Bundle
- angular - 无法弄清楚它告诉我“模块‘AppModule’声明的意外值‘未定义’”
- javascript - 卡在 javascript node express 中的过滤
- drupal - 删除了 reCaptcha,无法登录 drupal 网站
- python - 在 python 中,如何删除特定列为空白的整行?
- html - 如何使 DjangoTemplates 递归工作
- go - 检查 map[string]interface{} 中的多个键时使用 OR 逻辑
- swift - 仅在最终位置显示的旋转动画 iOS swift
- magento - Magento 补丁 SUPEE 10975 无法成功应用