【问题标题】:Parentheses in output输出中的括号
【发布时间】:2020-12-08 22:54:09
【问题描述】:

我无法摆脱输出中的括号。我已经将 Visual Studio Code 中的默认 python 版本从 2.7 更改为 3.9。我还将其中一个打印命令更改为返回命令。任何其他建议将不胜感激。代码如下:

def build_car(year, color, make, model, *car_accessories): 
    print(f"This car is a {year} {color} {make} {model}  with the following accessories--:") 
    for accessory in car_accessories: 
        return (f"{car_accessories}")

car = build_car('2021', 'tan' ,'ford','focus',
                'leather seats',
                'tinted windows',
                'all wheel drive') 
print(car)

【问题讨论】:

  • 你能修正你的代码格式吗? Python 对空格敏感,所有的 def 和 for 循环看起来都在同一级别。
  • 您正在返回一个数组。所以括号会保留,除非你想打印(*car)
  • 请修复您的缩进,目前它会因缩进错误而失败。
  • 包括一个您希望输出的示例。
  • 更改返回语句 - 那些括号指定返回值是一个元组。使用return f”{car_accessories}” 或者在这种情况下更简单地使用return car_accessories

标签: python output parentheses


【解决方案1】:

问题在于 *car_accessories 是一个元组,当您打印该元组时,它会使用括号括起来。您总是可以使用类似下面的方法将元组转换为字符串。获得字符串后,您可以使用 f 字符串应用您想要的任何格式。

return ', '.join(car_accessories)

【讨论】:

  • 打印不需要将元组转换为字符串,实际上它所做的只是 print 字符串。
  • @barny - 考虑到代码只是打印了其他东西,打印可能正是 OP 想要的。
  • 不清楚这个例子替换了什么代码。您能否将此作为修复 OP 代码的完整示例?
  • 您在猜测 - 您的语句“类似于以下将元组转换为字符串”不是您的代码所做的 - 您的代码会打印一个字符串。
  • 是的,这是一个错字。它应该是一个替换 OP 的 return 语句的 return 语句。哎呀。我编辑了我的评论。而且我肯定在这里猜测 OP 的意图,因为该功能的目标尚不清楚。我相信问题的关注点在于打印输出。
【解决方案2】:

build_car 拿不定主意。它打印一些东西,返回其他东西供调用者打印。很混乱。如果它的作用只是格式化字符串,则该函数更通用。让调用者决定下一步如何处理它。由于car_accessories 是一个项目元组,您可以用逗号“加入”它们。整个格式化步骤可以用一个 f-string 完成。

def build_car(year, color, make, model, *car_accessories):     
    return f"""This car is a {year} {color} {make} {model} with the following accessories:
{", ".join(car_accessories)}
"""

car = build_car('2021', 'tan' ,'ford','focus',
                'leather seats',
                'tinted windows',
                'all wheel drive')
print(car)

【讨论】:

    【解决方案3】:

    您应该在函数中构建完整的描述并返回完成的产品。在函数和调用程序之间拆分打印很尴尬。

    def build_car(year, color, make, model, *car_accessories): 
        description = f"This car is a {year} {color} {make} {model}  with the following accessories: "
        description += ' '.join(car_accessories)
        return description
    
    car = build_car('2021', 'tan' ,'ford','focus',
                    'leather seats',
                    'tinted windows',
                    'all wheel drive') 
    print(car)
    

    输出:

    This car is a 2021 tan ford focus  with the following accessories: leather seats tinted windows all wheel drive
    

    您的原始代码也有一个问题,即它一碰到第一个附件就returns。请查看return 的工作原理,以免再次犯此错误。

    【讨论】:

    • 感谢您分享您的经验并给我一个特定的主题,这将有助于了解更多信息。 .
    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2013-09-11
    • 2018-10-30
    • 2023-01-15
    • 2012-12-21
    相关资源
    最近更新 更多