我试图使用Walrus操作符:=
从用户那里获取输入,但是如果用户只键入输入键作为input
,python脚本将终止。如何捕获此错误并确保用户没有只按了回车键
有this answer,但使用walrus操作符无法工作
不带walrus操作员的该代码将成功检查是否仅按下了Enter键:
while True:
answer = input("Please enter something: ")
if answer == "":
print("Invalid! Enter key was pressed.")
continue
else:
print("Enter wasn't pressed!")
# do something
如果用户只按Enter键,则整个脚本将终止
while answer := input("Please enter something: "):
# if user pressed only `Enter` script will terminate. following will never run
if answer == "":
print("enter was pressed")
else:
print("Enter wasn't pressed!")
# do something
代码中发生了什么
第1部分:
之所以会发生这种情况,是因为此语句
answer := input("Please enter something: ")
接受输入值并将其赋值给变量answer
。如果按Enter
,则answer
的值为空字符串第二部分:
while
循环计算该值。由于该值为空字符串,且空字符串的值为false,因此将退出循环我们不能使用walrus操作符来实现这一点,因为控件从不进入循环,而且您需要检查输入字符串的值
您可以编写以下代码:
这意味着0将始终感到满意
你把赋值表达式放错地方了。原始循环是无限的,但第二个循环使用
answer
作为中断条件同样,因为我们使用的是
continue
,所以不需要else
子句在行动中:
然而,在这里使用walrus操作符并没有真正的优势,所以我会避免使用它
相关问题 更多 >
编程相关推荐