gpt4 book ai didi

python - 在 while 循环条件中分配给函数返回值并沿途捕获异常

转载 作者:行者123 更新时间:2023-11-28 22:15:28 27 4
gpt4 key购买 nike

我正在学习 C 以帮助我理解 Python。

在 C 中可以编写这样的代码:

int *ptr;
while ((c = scanf("%d", ptr)) == 1)
// do something.

在 Python 中,我会写

content = input()
while True:
try:
integer = int(content)
except:
print("try again")
content = input()
else:
break

与C相比,Python代码显得笨拙。是否可以编写更简洁的版本,类似于((c = scanf("%d", ptr)) == 1)

最佳答案

从 Python 3.8 开始,您可以使用 Assignment Expressions 实现类似的功能您可以在其中编写代码,例如

while (c := foo()) == bar:
# do stuff with c

如果你想在此过程中捕获异常,你应该定义foo(或为foo编写一个包装器)来处理该异常并返回一个失败的值(编辑:或通过,取决于上下文)针对 bar 的检查。

在这种特定情况下,代码可能如下所示:

def get_input():
try:
return int(input())
except ValueError:
return None # explicit is better than implicit

while (c := get_input()) is None:
print('try again')

# do stuff with c

关于python - 在 while 循环条件中分配给函数返回值并沿途捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com