输出是“你好,我是圣地亚哥”,但是我想打印"Hello. I'm Santiago and i love Python。我从来没有在同一行上使用过条件。我是Python新手。
2+2条件只是一个简单的例子。我希望如果条件是真的,我得到输出"Hello,我是Michael,我喜欢Python"?我需要"\"给每个不同的员工写信,就像我做的那样。
我不想使用解决方案f"{b}" f"{c}" if 2+2 == 4 else "",但是保持代码结构与问题一样
我该怎么解决呢?
a = "Hello. "
b = "I'm Santy"
c = " and i love Python"
x = f"{a}" \
f"{b}" if 2+2 == 4 else "" \
f"{c}"
print(x)发布于 2022-08-10 04:39:47
问题是,每行末尾的\并不像您想象的那样。在计算""之前,将f"{c}"与if...else连接起来。
解决这一问题的一种方法是添加+es来连接字符串。您还需要添加括号以强制执行正确的操作顺序。
x = f"{a}" + \
(f"{b}" if 2+2 == 4 else "") + \
f"{c}"但你不需要f""
x = a + \
(b if 2+2 == 4 else "") + \
c虽然出于智力上的好奇心,这是调查蟒蛇的好方法,但我强烈建议您避免在一次声明中尝试做任何事情。相反,将您的逻辑分解为将字符串连接在一起的谨慎步骤。对字符串的条件部分使用if语句而不是if表达式。一般来说,亲吻它(保持简单愚蠢)。
发布于 2022-08-10 04:51:49
你的问题是运算符优先的问题。字符串连接(暗示或显式使用+)比if-else (参见手册)具有更高的优先级,因此表达式的计算结果为:
x = (f"{a}" f"{b}") if 2+2==4 else ("" f"{c}")这将产生"Hello. I'm Santy"或" and i love Python"。要使c依赖于该条件,您必须插入该条件并使其仅适用于c (注意,我已经用True代替了您的条件,以简化):
x = f"{a}" f"{b}" + (f"{c}" if True else "")输出:
"Hello. I'm Santy and i love Python"注意,您需要在条件之前使用一个+作为括号表达式,它不是一个字符串文本,可以在没有运算符的情况下连接起来。
然后是False条件:
x = f"{a}" f"{b}" + (f"{c}" if False else "")输出:
"Hello. I'm Santy"编写成多行代码:
x = f"{a}" + \
f"{b}" + \
(f"{c}" if False else "")发布于 2022-08-10 04:40:41
f"{c}"和f"{b}" if 2+2 == 4 else ""是“联合”的。您可以通过将其更改为:
f"{a}" \
f"{b}"f"{c}" if 2+2 == 4 else "" \或者:
f"{a}" \
(f"{b}" if 2+2 == 4 else "") + f"{c}"https://stackoverflow.com/questions/73300665
复制相似问题