我想写一个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时,它打印"添加联系人"。为什么?
您的测试:
if option == 'A' or 'a':
实际上是这样工作的:
if (option == 'A') or 'a':
因为'a'总是True,所以这个测试总是通过。
你想改成
if (option == 'A') or (option == 'a')
或
if option in ('A', 'a'):
您正在测试错误的东西,使用:
if option.lower() == 'a':
或者:
if option in ('A', 'a'):
表达式option == 'A' or 'a'
解释为:
(option == 'A') or 'a'
和非空字符串在python中总是被认为是True
。
if a == 7 or 5
不代表if a == 7 or if a == 5
它表示(a==7) or 5
因为5是非假的所以它总是为真
和你的比较一样,只是用'A'和'A'代替7和5....