如果 true,则在格式化字符串中

if true inside a formatted string

提问人:Goldman wily 提问时间:9/7/2023 更新时间:9/7/2023 访问量:41

问:

我有两个名称要显示在单个打印语句上,以及它们是否被选为组并希望输出如下所示: “帐户名称:John (Unaffiliated) 帐户名称:Russel (Premium)” 我的名字在 account.name 下,我使用 account.group 进行 True 或 False 陈述,所以我想看看如何执行以下操作。

account1 = accounts(self, name, group)
account2 = accounts(self, name, group)

account1.name = "John"
account2.name = "Russel"
account1.group = False
account2.group = True

print (f"account name: {str(account1.name)} if account1.group is True {str"(Premium)"} else {str"
(Unaffiliated)":10} f"account name: {str(account2.name)} if account2.group is True {str"(Premium)"} else
{str"(Unaffiliated)"}\n")

我不确定如何或是否可以插入这样的 if 语句,或者有什么更有效的方式来获得我正在寻找的东西,但欢迎任何建议。 顺便说一句,创建了一个名为 accounts 的类,但我认为在我的示例中插入它无关紧要

默认情况下,我收到语法错误,这并不让我感到惊讶。

python if-statement 嵌套

评论

2赞 tadman 9/7/2023
不要试图在字符串中执行所有操作。你可以,而且应该使用变量来暂存被替换的值,或者使用样式占位符来解决这个问题,你可以在一个更易于阅读的代码块中更雄心勃勃地进行计算,这只是一个普通的参数。f%sformat()
0赞 quamrana 9/7/2023
您可以使用 python 的三元表达式。像这样:f'{"(Premium)" if account1.group else "(Unaffiliated)"}'

答:

0赞 xArbisRox 9/7/2023 #1

您可以使用三元运算符来实现此目的。

print(f'{"Premium" if account.name is True else "Unaffiliated"}')

但是,应该注意的是,在 f 字符串中放置太多内容会对代码的可读性产生负面影响,建议对此类方面使用变量或 .format() 方法

0赞 Pat McGee 9/7/2023 #2

语法也不正确 - 我认为这就是你所追求的。

account1_name = "John"
account2_name = "Russel"
account1_group = False
account2_group = True

print(f'account name: {account1_name} ({"Premium" if account1_group is True  else "Unaffiliated"})')

print(f'account name: {account2_name} ({"Premium" if account2_group is True  else "Unaffiliated"})')