For循环仅针对最后一种情况运行

时间:2017-10-09 05:30:35

标签: python

代码的主要目的是获取n行输入并将此数据添加到字典中,然后对字典执行n次查询。但是只有最后一个查询才能正常工作。

   from sys import stdin
n = int(input())
mydict={}
for i in range(0,n):
    pairs=input().split(' ')
    key=pairs[0]
    value=pairs[1]
    mydict[key]=value
    print (mydict)


for a in stdin:
    print(a)
    if(a in mydict):
        print(a+'='+mydict[a])
    else:
        print("Not Found")

2 个答案:

答案 0 :(得分:2)

stdin获得的输入包括新行字符,但是,由于使用input()字典中的键没有,因此查找失败。它适用于最后一次迭代,因为该行以文件结尾而不是新行终止。

您可以通过在第二个循环中删除行末尾的空格来修复它:

for a in stdin:
    a = a.rstrip()
    print(a)
    if a in mydict:
        print(a+'='+mydict[a])
    else:
        print("Not Found")

答案 1 :(得分:0)

从stdin读取的内容是原始流。

因此,当您点击回车键时,'\n'会添加到流中。

解决方案1:使用输入法。

解决方案2:从标准输入读取,并在从字典中查询之前使用rstrip()方法。