如何在Python中进行输入
我必须用Python打开文件,如下所示:如何在Python中进行输入,python,list,Python,List,我必须用Python打开文件,如下所示: Rapla;Tartu;157 Tallinn;Narva;211 Valga;Haapsalu;249 Viljandi;Paide;71 Tartu;Rakvere;123 Rapla;Narva;259 Paide;Narva;196 Paide;Tallinn;92 我想通过一个例子让程序像这样工作: Please enter starting point: Rapla Now please enter ending point: Tartu
Rapla;Tartu;157
Tallinn;Narva;211
Valga;Haapsalu;249
Viljandi;Paide;71
Tartu;Rakvere;123
Rapla;Narva;259
Paide;Narva;196
Paide;Tallinn;92
我想通过一个例子让程序像这样工作:
Please enter starting point: Rapla
Now please enter ending point: Tartu
Distance between Rapla and Tartu is 157 km.
我设法用python制作了一个列表,但我对python相当陌生,我不知道如何进行输入,所以我可以得到一个可访问的输出
到目前为止,我成功做到了:
town1 = []
town2 = []
distance = []
f = open('town.csv')
for list in f:
x = list.split(';')
town1.append(x[0])
town2.append(x[1])
distance.append(x[2])
f.close()
n = len(town1)
for i in range(n):
print('Starting point is: ' + town1[i])
print('Ending point is: ' + town2[i])
print('Distance between', town1[i], 'and', town2[i], 'is', distance[i], 'km.')
这个程序只打印每个城镇的起点和终点以及距离,但我想制作一个程序来询问起点和终点
# assumes Python 2.x
from collections import defaultdict
import csv
def load_distances(fname):
distance = defaultdict(dict)
with open(fname, "rb") as inf:
incsv = csv.reader(inf, delimiter=";")
for town_a, town_b, dist in incsv:
distance[town_a][town_b] = int(dist)
return distance
def main():
distance = load_distances("town.csv")
town_a = raw_input("Please enter starting point: ")
town_b = raw_input("Now please enter ending point: ")
if town_a not in distance or town_b not in distance[town_a]:
print("I don't know how to get from {} to {}".format(town_a, town_b))
else:
print("Distance between {} and {} is {} km.".format(town_a, town_b, distance[town_a][town_b]))
if __name__=="__main__":
main()
如果您使用的是Python 3,则需要将raw_input()
替换为input()
,将open(fname,“rb”)
替换为open(fname,newline=”“)
defaultdict
是一种特殊类型的dict
;如果您向它请求一个它没有的对象,它将返回一个新的默认对象,而不会导致错误。要读取用户输入,请使用该函数。根据print()
调用周围的括号,我猜您正在使用Python 3。当心工作方式不同raw\u input()
要读取数据文件,请使用带
分隔符=';'的模块代码>下面是一种使用过滤器为Python2.x实现此功能的方法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def loadTowns():
with open('town.csv') as f:
return [row.split(';') for row in f.read().splitlines()]
towns = loadData()
start = raw_input("Enter your start: ")
towns = filter(lambda r: r[0] == start, towns)
dest = raw_input("Enter your destination: ")
towns = filter(lambda r: r[1] == dest, towns)
print towns[0][2] if towns else "Not a valid selection"