这段代码可以更优化吗?

时间:2013-06-21 16:59:18

标签: python optimization logic

问题是:

有一条通往一个城镇的不同城镇的铁路。它被认为是 由于预算问题,铁路是单向的。如果有城市A,它有 城市B和C城市通过铁路连接,A没有强制要求 通往B和C的直达铁路。从A到C的路线可以是A到B,然后是B. 将上述场景描绘为图表。节点是城镇和 边缘是它们之间的距离 给出的输入将是图表以及到城镇的路线。输出必须是城镇之间的铁路总距离,如果不存在路线,则必须说“没有路线”。

Input: AB5, BC2, CD3, BE4
Input: A-B-E
Input: A-C-E
Output: 9
Output: No Route Exists 

我的代码是:

print "Welcome to the total path calculation program"
n=1
inp=1
graph=dict()
while(n==1):
 print "Enter the connection:"
 x=raw_input()
 new={x[0]:{x[1]:x[2]}}
 graph.update(new)
 print "Do you want to enter another connection?"
 y=raw_input()
 if y=='y':
   n=1
 else:
   n=0

while(inp):
 print "Now enter the connection to find the total cost:"
 x=raw_input()
 try:
    t=int(graph[x[0]][x[2]])+int(graph[x[2]][x[4]])
    print "The total cost is %d" %(t)
 except KeyError:
    print "No route exists"
 print "Do you want to find cost for more connections?"
 x=raw_input()
 if x=='y':
    inp=1
 else:
    inp=0

1 个答案:

答案 0 :(得分:1)

快速的事情,当你想要运行一个无限循环,并让它在特定事件上中断时,没有必要为此目的严格声明和修改变量。 你可以像这样开始你的while循环

while True:

并像这样结束他们

y=raw_input()
if y.lower() !='y':
    break

注意变量末尾的.lower。这将强制用户输入小写,因此您的检查将同时捕获“Y”和“y”,这可能会有所帮助。