当我按Enter键输入raw_input(“select:”)时,我会得到所有字典键。为什么我明白了?我怎样才能避免这个问题?
dict={"tony":1,"jack":2,"apple":3}
search = raw_input("select: ")
number = 1
for i in dict.keys():
if search in i:
print number, i
number +=1
答案 0 :(得分:0)
要避免:
if search in i and search != '':
答案 1 :(得分:0)
当你输入 nothing 时,search
将是一个空字符串,任何字符串都包含一个空字符串,这就是为什么search == ''
,然后{{} 1}}表示所有字符串search in i == True
。
答案 2 :(得分:0)
问题为什么?有一个答案:它是因为每个字符串的空字符串''
是in
。
我认为您可以在代码中尝试完全相同:
if search == i :
答案 3 :(得分:0)
您可以检查字符串是否为空,如果是,请不要运行字典搜索。 Python将空字符串计算为False
,可在此处使用:
dict={"tony":1,"jack":2,"apple":3}
search = raw_input("select: ")
number = 1
if search:
for i in dict.keys():
if search in i:
print number, i
number +=1
答案 4 :(得分:0)
空字符串是其自身或任何其他字符串的子字符串。
>>> ''.find('')
0
空字符串始终被视为任何其他字符串的子字符串,因此
"" in "abc"
将返回True
。
>>> '' in "tony"
True
>>> all('' in name for name in ["tony", "jack", "apple"])
True
>>> search = raw_input("select: ")
select:
>>> print search
>>> type(search)
<class 'str'>
>>> len(search)
0
>>> '' in search # empty string
True
>>> search == ''
True
这就是为什么即使search
有一个空字符串,你的代码也会打印字典键。
您可能需要执行if search in i:
。
if search == i: