如何检查在Python中使用Walrus操作符时是否按下了Enter键?
我正在尝试使用Walrus操作符如何检查在Python中使用Walrus操作符时是否按下了Enter键?,python,python-3.x,walrus-operator,Python,Python 3.x,Walrus Operator,我正在尝试使用Walrus操作符:=,从用户那里获取输入,但是如果用户只将Enter键键入为input,python脚本将终止。如何捕获此错误并确保用户不仅按了Enter键 有,但使用海象操作符不起作用 不带walrus操作员的该代码将成功检查是否仅按下了Enter键: while True: answer = input("Please enter something: ") if answer == "": print(
:=
,从用户那里获取输入,但是如果用户只将Enter键键入为input
,python脚本将终止。如何捕获此错误并确保用户不仅按了Enter键
有,但使用海象操作符不起作用
不带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(“请输入某物”)
获取输入值并分配给变量answer
。如果按Enter
,则answer
的值为空字符串
第二部分:while
循环计算值。由于该值为空字符串,且空字符串的值为false,因此将退出循环
我们无法使用walrus运算符执行此操作,因为控件从未进入循环,而且您希望检查输入字符串的值,您可以编写以下代码:
while(答案:=输入(“请输入内容”)!=0:
#如果用户只按“回车”,脚本将终止。跟踪永远不会运行
如果答案==“”:
打印(“按回车键”)
其他:
打印(“未按Enter!”)
#做点什么
这意味着0将始终满足。您将赋值表达式放在了错误的位置。原始循环是无限的,但第二个循环使用
answer
作为中断条件
while True:
if not (answer := input("Type something: ")):
print("You didn't type anything before pressing Enter!")
continue
print("You typed:", answer)
同样,由于我们使用的是continue
,因此不需要else
子句
在行动中:
键入:你好!
你输入:你好!
键入以下内容:
在按Enter键之前,您没有键入任何内容!
输入:嗨!
你打字了:嗨!
然而,在这里使用walrus操作符并没有真正的优势,所以我会避免使用它
while True:
answer = input("Type something: ")
if not answer:
print("You didn't type anything before pressing Enter!")
continue
print("You typed:", answer)
显然,walrus操作符不适合这个用例。它也不会使代码更短或更可读。您的原始(工作)解决方案更优越。
Enter
只会创建一个长度为零的字符串,对于while循环,该字符串的计算结果将为False
,因此该块将在不执行的情况下退出。这是对walrus运算符的一个糟糕的使用。在True:answer=input()时执行会更加清晰,就像OP最初所做的那样。