2016-01-09 74 views
0

我给出的输入存储在变量“inp”中。当我在下面显示的if条件中比较它时,我没有得到正确的结果。 for循环被执行,但没有显示输出。当我用字符串“bin_A”替换变量时,我得到正确的输出。如何使用if语句比较输入字符串

这里是我的代码片段:

def main(): 
    with open("apc.json") as data_file: 
     data = json.load(data_file) 

    inp = raw_input("enter name") 
    print "read the input", str(inp) 
    for i in range(0,12): 

     if data["work_order"][i]["bin"] == inp : #have tried repr(inp) 
      print data["work_order"][i]["bin"] 
      print "gotcha", i 
      print data["work_order"][i]["item"] 

if __name__ == '__main__': 
    main() 

注:print data["work_order"][i]["bin"] 输出为Bin_A。所以,当我试图给我的输入作为Bin_A,什么都不会发生

+0

也许你应该显示数据[work_order] [i] [bin]中的内容? –

+1

什么是数据类型data [“work_order”] [i] [“bin”]'??如果不是str,那么它们永远不会是等于。,同样尝试'str(data [...])',因为打印如你所说... – Copperfield

回答

2

考虑data

data = json.load(data_file) 

设置,那么你可能需要将变量iint转换为str

if data["work_order"][str(i)]["bin"] == inp 

或者因为您似乎多次使用i,您可以直接说

for i in map(str, range(0,12)): 
+0

conversion [str(i)]似乎并不工作也是如此。但是,请你解释转换的原因吗? – Username

+0

也许'str(data [“work_order”] [i] [“bin”])',否则返回一个对象? – Keelan

+0

我也试过这个,似乎也没有工作。 – Username