我要求提供一些幫助,因為我相信我知道為什么我超出范圍,但我不知道如何解決它。謝謝你: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])
uj5u.com熱心網友回復:
要解決什么?您希望該計劃實作什么目標?
你有一個錯誤,因為...
j從0到len(test),即12test[j]astemp只有 5 個元素。
要在 中的數字中進行選擇temp,索引應該是0, 1, 2, 3, 4(從左起第一個、第二個、第三個……)或-1、-2、-3、-4、-5(從右起第一個、第二個、第三個……) .
要附加第一個tempto finalnumtemp,請修復
finalnumtemp.append(temp[j])
到
finalnumtemp.append(temp[0])
uj5u.com熱心網友回復:
也許你應該研究串列理解。我知道一開始可能有點令人生畏,但在我掌握了它們之后,我個人發現它比嵌套 for 回圈更有意義。您可以在一行中將零和一的字串轉換為單獨的整數串列:
numbers = [[int(char) for char in line] for line in test]
[[0, 0, 1, 0, 0], [1, 1, 1, 1, 0], ... , [0, 0, 0, 1, 0], [0, 1, 0, 1, 0]]
然后獲取第一個數字(或任何數字):
first_num = [num[0] for num in numbers]
[0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0]
如果您愿意,甚至可以對串列執行操作:
sum_num = [sum(num) for num in numbers]
[1, 4, 3, 4, 3, 4, 3, 3, 1, 3, 1, 2]
嵌套的 for 回圈會很快變得非常混亂。我知道這不是問題的實際答案,但我認為無論如何它可能會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/402999.html
標籤:
