首页 > 解决方案 > 为什么一行 if 语句没有给出异常结果

问题描述

我试图在我的程序中使用一行 if 条件,但它没有显示 else 之后的字符串,我认为这是因为语句为 True 并且程序认为 else 之后的代码必须执行,如果语句是错误的。

In [506]: string = "wow"

In [507]: string = string + "omg" if string == "wow" else "" + "why this doesn't get added?" if 1 == 1 else ""

In [508]: string
Out[508]: 'wowomg'

我想string成为'wowomgwhy this doesn't get added?'

标签: pythonpython-3.x

解决方案


它与运算符优先级有关,整个+在 first 之前评估if-else

尝试这个

string = "wow"
string = (string + "omg" if string == "wow" else "") + ("why this doesn't get added?" if 1 == 1 else "")

print(string)

输出:

wowomg为什么没有添加?

您的原始代码相当于

string = (string + "omg" if string == "wow" else ("" + "why this doesn't get added?" if 1 == 1 else ""))

推荐阅读