Raw_input使用python 2.7

时间:2015-05-10 01:41:43

标签: python

这是我的功能:

def mainMenu():
    print " Do you want to send a message(send) or add a name to the database(add) or exit the program(exit)?"
    answer = raw_input()
    print answer
    if answer is "send":
        sendMessage()
    elif answer is "add":
        addName()
    elif answer is "exit":
        sys.exit()
    else:
        print "Sorry, '%s' is not a valid input. Please use one 'send', 'add', or 'exit'" %answer

无论我在else语句中输入结果。我唯一能做的就是raw_input()的问题。

这是shell的截图。语法高亮是因为我使用的是sublimeREPL,它只是这样做,根本不会影响代码:

program output

我已经测试了所有被调用的函数,它们可以单独运行

2 个答案:

答案 0 :(得分:6)

尝试将is替换为==

例如:

In [1]: answer = raw_input()
arst

In [2]: answer
Out[2]: 'arst'

In [3]: answer == 'arst'
Out[3]: True

In [4]: answer is 'arst'
Out[4]: False

答案 1 :(得分:3)

您正在使用身份测试来比较字符串。输入文本时,用户不可能创建完全相同的字符串对象;他们创建 new 字符串对象,而不是包含相同的值。

请勿使用is,使用==来测试相等;具有相同值的不同对象:

if answer == "send":
    sendMessage()
elif answer == "add":
    addName()
elif answer == "exit":
    sys.exit()

请参阅Understanding Python's "is" operator