这个python电话本程序存在一些问题



我想写一个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....

最新更新