在while循环条件中分配给函数返回值并在此过程中捕获异常

我正在学习 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

Python 代码和 C 相比显得笨拙。有没有可能写一个更简洁的版本,类似于((c = scanf("%d", ptr)) == 1)?


翻过高山走不出你
浏览 155回答 1
1回答

红糖糍粑

从 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 implicitwhile (c := get_input()) is None:    print('try again')# do stuff with c
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python