-3
我試圖運行PHP相同的代碼,但它工作得很好,當嘗試在Python的運行它給我以下錯誤:無法解析錯誤:列表索引超出範圍
if my_queue[int_neighbour]['visited'] == '0':
IndexError: list index out of range
輸入:
1 0 A 2,3
2 0 B 1,4,5
3 0 C 1,2
4 0 D 2,5
5 0 E 2,4
全碼:
import string
import time
start_time = time.time() #starting time
file_name = input('Enter a file name: ')
f = open(file_name, 'r')
data = f.readlines()
final_data = []
for line in data:
values = line.split()
neighbors = values[3].split(',')
vertex_mod = int(values[0])-1
read_line = dict({
'vertex': vertex_mod,
'visited': values[1],
'letter': values[2],
'neighbors': neighbors
})
final_data.append(read_line)
def dfs(vertex, my_queue):
if vertex['visited'] == '0':
print(vertex['letter'])
int_vertex = int(vertex['vertex'])
my_queue[int_vertex]['visited'] = '1';
for neighbour in vertex['neighbors']:
int_neighbour = int(neighbour)
if my_queue[int_neighbour]['visited'] == '0':
result_queue = dfs(my_queue[int_neighbour], my_queue)
return my_queue
dfs(final_data[1], final_data)
我得到的輸出似乎是正確的,但我也越來越錯誤。
你爲什麼要輸入'string'? PHP如何相關?我可以向你保證「相同的代碼」在PHP中不起作用。 – geoffspear
當您遍歷結構並確認它看起來如預期時,會放入一對'print'。當您發現問題並且您不明白原因時,請更新您的問題,我們很樂意爲您提供幫助。調試好運 –
看起來像一個錯誤的錯誤。你的鄰居是1索引,你的列表是0索引。 (這也很難調試;我建議找一個可以一直縮進的編輯器)。 – geoffspear