我想编写一个python程序,但是当我输入s或S时,它会出错。
#!/usr/bin/python
phonebook = {}
while True:
option = raw_input('Welcome use pyphonebook: add(A) / search(S)?')
if option == 'A' or 'a':
print 'Add a contact'
name = raw_input('Enter a name:')
if phonebook.__contains__(name):
print 'Contact %s is already in phonbook' % name
else:
num = raw_input('Enter phone number:')
phonebook[name] = num
elif option == 'S' or 's':
print 'Search a contact'
name = raw_input('Enter a name:')
if name in phonebook:
print "%s's phone number is %s" % (name, phonebook[name])
else:
print 'Not found'
print phonebook
当我输入S或s时,它会打印“添加联系人”。为什么呢?
答案 0 :(得分:5)
你的考试:
if option == 'A' or 'a':
实际上是这样的:
if (option == 'A') or 'a':
由于'a'始终为True,因此该测试始终通过。
你想要
if (option == 'A') or (option == 'a')
或
if option in ('A', 'a'):
答案 1 :(得分:2)
你正在测试错误的东西,使用:
if option.lower() == 'a':
或者也许:
if option in ('A', 'a'):
表达式option == 'A' or 'a'
被解释为:
(option == 'A') or 'a'
并且在python中始终将非空字符串视为True
。
答案 2 :(得分:0)
如果a == 7 or 5
并不意味着a == 7 or if a == 5
它意味着(a==7) or 5
,因为5是非虚假的,它总是真的
与你的比较相同的只是'A'和'a'而不是7和5 ......