这是我的功能:
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,它只是这样做,根本不会影响代码:
我已经测试了所有被调用的函数,它们可以单独运行
答案 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()