我正在做一个项目,在某个时候会问用户一个是/否问题。我目前使用此代码来处理此类问题:
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”命令,并且会传递我给它的任何内容。
有小费吗?
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 次 |
| 最近记录: |