【发布时间】:2022-01-03 08:38:20
【问题描述】:
我要求提供一些帮助,因为我相信我知道为什么我超出了范围,但我不知道如何解决它。谢谢你:D
#Import input.
from pathlib import Path
test = Path(r'C:\Users\Helphy\Desktop\Perso\GitHub\Advent_of_Code_2021\Day_3\Input.txt').read_text().split("\n")
#Defined some variable
temp = []
finalnumtemp = []
finalnum = []
f_num = []
zero = 0
one = 0
for t in range(len(test)):
for j in range(len(test)):
temp = list(test[j])
print(temp)
finalnumtemp.append(temp[j])
print(finalnumtemp)
"""for i in range(len(finalnumtemp)):
if int(finalnumtemp[i]) == 0:
zero += 1
else:
one += 1
if zero > one:
finalnum.append(0)
else:
finalnum.append(1)
zero == 0
one == 0
finalnumtemp = []
print(finalnum)"""
Input :
00100
11110
10110
10111
10101
01111
00111
11100
10000
11001
00010
01010
error: An exception has occurred: IndexError
list index out of range
File "C: \ Users \ Helphy \ Desktop \ Perso \ GitHub \ Advent_of_Code_2021 \ Day_3 \ Day_3.py", line 16, in <module>
finalnumtemp.append (temp [j])
【问题讨论】:
-
你能分享完整的回溯吗?
-
做完就知道好不好了
-
问自己问题
test变量是什么数据类型?我在temp = list(test[j])中收到了什么?temp列表的长度是多少,如果j在range(len(test))中,这真的与temp值长度有关吗?我可以在这里做temp[j]还是长度不同?尝试为变量使用更好的名称,这样更容易在视觉上将它们分开。 -
test变量接收List[str]类型,然后temp接收list of chars因为当您执行test[j]时您引用str而当您执行list(test[j])时您转换字符串到字符列表。您的j in range(len(test)),假设 len(test) 在您的测试文件中可以是 100 个单词。当len(temp)是单个单词的长度时,假设5 个字符,所以temp[j]是错误的,导致j超过最大索引。您需要更改此行使用t索引:for j in range(len(test[t])): -
谢谢你我解决了。真的,我保证有更好的名字^^
标签: python-3.x indexoutofrangeexception