我正在研究一个项目,它一度会询问用户是/否问题。我目前使用此代码来处理这些问题:
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'命令并且会传递我给它的任何东西。
任何提示?
答案 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"