You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python格式化字符串内嵌条件判断实现账户信息输出报错求助

解决方法

你原来的f-string写法完全错误,内嵌条件判断的语法是{表达式 if 条件 else 备选表达式},而且字符串拼接逻辑混乱,还有不必要的str()转换(account.name本身就是字符串),以及错误的引号嵌套。

修正后的基础实现

先修正类实例化的问题(实例化类时不需要传self,那是类方法内部的参数),再用正确的f-string语法实现需求:

# 假设accounts是已定义的类
class accounts:
    def __init__(self):
        self.name = ""
        self.group = False

# 创建账户实例
account1 = accounts()
account2 = accounts()

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

# 正确的f-string格式化输出,用:<20保证第一个条目后有足够空格
print(f"account name: {account1.name} ({'Premium' if account1.group else 'Unaffiliated':<20}account name: {account2.name} ({'Premium' if account2.group else 'Unaffiliated'})")

更高效的优化方案

如果需要处理多个账户,建议把单个账户的格式化逻辑封装成函数,避免重复代码:

def format_account(account):
    status = "Premium" if account.group else "Unaffiliated"
    return f"account name: {account.name} ({status})"

# 用:<30控制第一个账户字符串的宽度,保证输出对齐
print(f"{format_account(account1):<30}{format_account(account2)}")

关键说明

  • f-string内嵌条件判断的正确格式是{'Premium' if account.group else 'Unaffiliated'},直接在大括号内写三元表达式即可。
  • 用:<N格式符可以让字符串左对齐并占据N个字符宽度,自动用空格填充空缺,保证两个账户信息的排版整齐。
  • 判断布尔值时直接写account.group即可,无需冗余的is True写法。

内容的提问来源于stack exchange,提问作者Goldman wily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:22