Python单行if-else增量语句的语法错误修正求助
Python单行if-else增量语句的语法错误修正求助
嗨,我来帮你搞定这个语法问题~
你出错的原因是在三元条件表达式里直接写了a[i] +=这类赋值操作,这不符合Python的语法规则——三元表达式的分支部分需要返回一个具体的值,而不是执行赋值动作。
你原来的多行代码逻辑是根据c[i]的值,给a[i]加上3、1或者0,所以正确的单行写法应该是先通过三元表达式算出要加的数值,再统一加到a[i]上,像这样:
a[i] += 3 if c[i] == 'fine' else 1 if c[i] == 'check' else 0
如果觉得嵌套的三元表达式可读性差点,也可以给内层的表达式加个括号,逻辑是完全一样的:
a[i] += 3 if c[i] == 'fine' else (1 if c[i] == 'check' else 0)
另外再给你个小建议,如果以后这类判断条件变多,用字典映射会更清晰易维护,比如:
add_mapping = {'fine': 3, 'check': 1} a[i] += add_mapping.get(c[i], 0)
这个写法虽然不是严格的一行(当然也可以缩成一行),但可读性比嵌套三元表达式好很多,后续新增条件只需要在字典里加键值对就行~
备注:内容来源于stack exchange,提问作者Ursula
相关产品推荐
相关产品推荐

