0

我想写一个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 时,它会打印“添加联系人”。为什么?

4

3 回答 3

5

你的测试:

if option == 'A' or 'a':

实际上是这样工作的:

if (option == 'A') or 'a':

由于 'a' 始终为 True,因此此测试始终通过。

你想要

if (option == 'A') or (option == 'a')

或者

if option in ('A', 'a'):
于 2013-03-11T16:45:37.903 回答
2

您正在测试错误的东西,请使用:

if option.lower() == 'a':

也许:

if option in ('A', 'a'):

表达式option == 'A' or 'a'被解释为:

(option == 'A') or 'a'

True并且在 python中始终考虑非空字符串。

于 2013-03-11T16:44:39.527 回答
0

ifa == 7 or 5 并不意味着如果a == 7 or if a == 5 它意味着(a==7) or 5 因为 5 是非假的,所以它总是真的

与您的比较相同的是它的'A'和'a'而不是7和5....

于 2013-03-11T16:46:22.870 回答