“if”语句中不区分大小写(Python)

Exp*_*ens 0 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
Run Code Online (Sandbox Code Playgroud)

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

if choice == "Y" or "y":
    finalchoice="true"
Run Code Online (Sandbox Code Playgroud)

不幸的是,所有这些都忽略了“else”命令,并且会传递我给它的任何内容。

有小费吗?

Sud*_*pta 5

if choice == "Y" or "y":是不正确的!它将始终评估为True

它本质上是(choice == "Y")("y")。后者是True因为 python 中的任何非空字符串在逻辑上评估为布尔值 True。

你应该这样做:

if choice in ["Y","y"]:
Run Code Online (Sandbox Code Playgroud)

或者,

if choice == "Y" or choice == "y":
Run Code Online (Sandbox Code Playgroud)

或者你可以使用:

if choice.lower() == "y":
    finalchoice="true"
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

8245 次

最近记录:

11 年,9 月 前