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

a == 7 or 5 5 はfalseyでa == 7 or if a == 5 はない(a==7) or 5 ので、それは常に true です。

7 と 5 の代わりに 'A' と 'a' だけを比較した場合と同じこと....

于 2013-03-11T16:46:22.870 に答える