为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻过高山走不出你 2021-07-08 14:11:34
我正在学习 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


查看完整回答
反对 回复 2021-07-21
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号