我想提示用户从文本文件(键)输入特定数据,这样我的字典就可以为每个数据提供值。
它的工作原理如下:
fin=open('\\python34\\lib\\toys.txt')
toys = {}
for word in fin:
x=fin.readline()
x = word.replace("\n",",").split(",")
a = x[0]
b=x[1]
toys[a]=str(b)
i = input("Please enter the code:")
if i in toys:
print(i," is the code for a= ", toys[i],)
else:
print('Try again')
if i == 'quit':
break
但如果我从列表中输入一个随机密钥,它会打印'再试一次'。 (以下是:
D1,Tyrannasaurous
D2,Apatasauros
D3,迅猛
D4,Tricerotops
D5,翼龙
T1,柴电
T2,蒸汽机
T3,Box Car
T4,油罐车
T5,守车
B1,棒球
B2,篮球
B3,足球
B4,垒球
B5,网球
B6,Vollyeball
B7,Rugby Ball
B8,板球
B9,药球
但如果我这样做是为了它的工作原理。如何修复此程序,以便我可以随时输入任何键,它仍会打印相应的值?
答案 0 :(得分:2)
在提示搜索字词之前,您需要读取整个文件。因此,您需要两个循环 - 一个用于获取整个数据,另一个循环用于搜索数据。
以下是您更新的代码的外观。我用数组替换了文件输入,以便我可以使用Web工具运行它:
fin=['D1,Tyrannasaurous','D2,Apatasauros','D3,Velociraptor' ]
toys = {}
for word in fin:
x = word.replace("\n",",").split(",")
a = x[0]
b=x[1]
toys[a]=str(b)
while 1:
i = input("\nPlease enter the code:")
if i in toys:
print(i," is the code for a= ", toys[i],)
else:
print('\nTry again')
if i == 'quit':
break
此处输出:https://repl.it/BVxh
答案 1 :(得分:0)
将文件读入字典:
with open('toys.txt') as file:
toys = dict(line.strip().split(',') for line in file)
要以交互方式从命令行打印与用户提供的输入键对应的值,直到收到quit
键为止:
for code in iter(lambda: input("Please enter the code:"), 'quit'):
if code in toys:
print(code, "is the code for toy:", toys[code])
else:
print(code, 'is not found. Try again')