首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件在同一条线上。问题是它没有打印下一行

条件在同一条线上。问题是它没有打印下一行
EN

Stack Overflow用户
提问于 2022-08-10 04:33:08
回答 3查看 64关注 0票数 0

输出是“你好,我是圣地亚哥”,但是我想打印"Hello. I'm Santiago and i love Python。我从来没有在同一行上使用过条件。我是Python新手。

2+2条件只是一个简单的例子。我希望如果条件是真的,我得到输出"Hello,我是Michael,我喜欢Python"?我需要"\"给每个不同的员工写信,就像我做的那样。

我不想使用解决方案f"{b}" f"{c}" if 2+2 == 4 else "",但是保持代码结构与问题一样

我该怎么解决呢?

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-10 04:39:47

问题是,每行末尾的\并不像您想象的那样。在计算""之前,将f"{c}"if...else连接起来。

解决这一问题的一种方法是添加+es来连接字符串。您还需要添加括号以强制执行正确的操作顺序。

代码语言:javascript
复制
x = f"{a}" + \
    (f"{b}" if 2+2 == 4 else "") + \
    f"{c}"

但你不需要f""

代码语言:javascript
复制
x = a + \
    (b if 2+2 == 4 else "") + \
    c

虽然出于智力上的好奇心,这是调查蟒蛇的好方法,但我强烈建议您避免在一次声明中尝试做任何事情。相反,将您的逻辑分解为将字符串连接在一起的谨慎步骤。对字符串的条件部分使用if语句而不是if表达式。一般来说,亲吻它(保持简单愚蠢)。

票数 1
EN

Stack Overflow用户

发布于 2022-08-10 04:51:49

你的问题是运算符优先的问题。字符串连接(暗示或显式使用+)比if-else (参见手册)具有更高的优先级,因此表达式的计算结果为:

代码语言:javascript
复制
x = (f"{a}" f"{b}") if 2+2==4 else ("" f"{c}")

这将产生"Hello. I'm Santy"" and i love Python"。要使c依赖于该条件,您必须插入该条件并使其仅适用于c (注意,我已经用True代替了您的条件,以简化):

代码语言:javascript
复制
x = f"{a}" f"{b}" + (f"{c}" if True else "")

输出:

代码语言:javascript
复制
"Hello. I'm Santy and i love Python"

注意,您需要在条件之前使用一个+作为括号表达式,它不是一个字符串文本,可以在没有运算符的情况下连接起来。

然后是False条件:

代码语言:javascript
复制
x = f"{a}" f"{b}" + (f"{c}" if False else "")

输出:

代码语言:javascript
复制
"Hello. I'm Santy"

编写成多行代码:

代码语言:javascript
复制
x = f"{a}" + \
    f"{b}" + \
    (f"{c}" if False else "")
票数 1
EN

Stack Overflow用户

发布于 2022-08-10 04:40:41

f"{c}"f"{b}" if 2+2 == 4 else ""是“联合”的。您可以通过将其更改为:

代码语言:javascript
复制
f"{a}" \
    f"{b}"f"{c}" if 2+2 == 4 else "" \

或者:

代码语言:javascript
复制
f"{a}" \
    (f"{b}" if 2+2 == 4 else "") + f"{c}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73300665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档