最短路径程序Python

时间:2016-05-26 11:21:26

标签: python-3.x input shortest-path is-empty

我已经写了以下程序,并且有2个错误'我不知道如何解决。输入b1,c1,d1和e1对应于点和相邻节点。 例如,如果我给出输入:A B C,这意味着从A点开始您可以前往B和C.输入f1对应于起点和终点。例如,如果我给出输入:A D,这意味着你从A点开始并希望在D点结束。

b1 = input() 
c1 = input()
d1 = input()
e1 = input()
f1 = input()
b = b1.split()
c = c1.split()
d = d1.split()
e = e1.split()
f = f1.split()
b_node = b[1:]
c_node = c[1:]
d_code = d[1:]
e_node = e[1:]
f_node = f[1:]

G = {b[0]:b_node, c[0]:c_node, d[0]:d_node, e[0]:e_node}

def find_path(graph, start, end, path = []):
    path = path + [start]
    newpath = []
    if start == end:
        return path
    shortest = None
    for node in graph[start]:
        if node not in path:
            newpath = find_path(graph, node, end, path)
            if newpath:
                if not shortest or len(newpath)<len(shortest):
                    shortest = newpath
    return shortest
print(find_path(G, f[0], f[1]))

我给我的程序输入以下内容

A B C
B A C
C B D
D
A D

我的问题如下: 1.我的程序发出错误,因为d_node = [](空)。但是,这是 应该是这样的,因为从D点开始,你无法前往任何地方!如何让它正确运行? 有没有办法让我的节目要求一个号码&#39; N&#39;点,然后给我N行给那些点所有相邻的信息?我尝试了一些形式

input_list = []
x = int(input())
for i in range(x):
    input_list.append(input())

但是无法使它发挥作用..任何想法?

1 个答案:

答案 0 :(得分:0)

1:
你有一个错误的“d_node&#39;正如你所写的那样&#39; d_code&#39;。

2:
尝试使用while循环;如果输入空行(表示您已完成输入点),则继续。类似的东西:

while True:
    i = input()
    if not i:
        break