我正在学习 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: breakPython 代码和 C 相比显得笨拙。有没有可能写一个更简洁的版本,类似于((c = scanf("%d", ptr)) == 1)?
1 回答

红糖糍粑
TA贡献1815条经验 获得超6个赞
从 Python 3.8 开始,您可以使用赋值表达式实现类似的功能,您可以在其中编写代码,例如
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
添加回答
举报
0/150
提交
取消