案例不敏感"如果"声明(Python)

时间:2014-04-24 07:09:07

标签: python python-2.7

我正在研究一个项目,它一度会询问用户是/否问题。我目前使用此代码来处理这些问题:

def yn():
    global finalchoice
    choice=str(raw_input("Y/N: "))
    if choice == "Y":
        finalchoice="true"
    elif choice == "y":
        finalchoice="true"
    elif choice == "N":
        finalchoice="false"
    elif choice == "n":
        finalchoice="false"
    else:
        yn()
    pass

但这似乎效率很低,特别是我必须分别检查“Y”和“y”或“N”和“n”。我试过了:

if choice == "Y" or "y":
    finalchoice="true"

不幸的是,所有这一切都忽略了'else'命令并且会传递我给它的任何东西。

任何提示?

2 个答案:

答案 0 :(得分:4)

if choice == "Y" or "y":不对!它将始终评估为True

它基本上是(choice == "Y")("y")。而后者是True,因为python中的任何非空字符串在逻辑上都计算为布尔值True。

你应该这样做:

if choice in ["Y","y"]:

或者,

if choice == "Y" or choice == "y":

或者您可以使用:

if choice.lower() == "y":
    finalchoice="true"

答案 1 :(得分:1)

要添加到@Dudipta的答案,一种方法是删除案例并只取第一个字母:

if choice.lower().startswith("y"):
    finalchoice="true"