【问题标题】:Format of f string examplef字符串示例的格式
【发布时间】:2020-04-26 13:52:00
【问题描述】:

我在教科书中有一个 f 字符串的示例,它是一个函数,其目的是获取一个列表并打印出枚举的列表,我不明白代码是如何运行的,但我知道它工作正常。我想了解一下关于这段代码的一些事情:

import random
OPTIONS = ['rock', 'paper', 'scissors']

def print_options():
    print('\n'.join(f'({i}) {option.title()}' for i,option in enumerate(OPTIONS)))


print_options()

输出:

(1) Rock
(2) Paper
(3) Scissors

问题行是函数的主体。我想看看如何修改该行但保留 f-string 方法以省略枚举,例如

想要的输出:

Rock
Paper
Scissors

我能想到的只有:

def _print_choices():
    print('\n.join(f'({choice.title()}))' for choice in choices)

print_choices()

从编辑器中的红色数量可以看出,我什至不值得运行。

有什么想法吗?

【问题讨论】:

  • 下面的答案是正确的,但仅供参考:您不需要 f 字符串、title() 方法甚至函数定义。只需print('\n'.join(option for option in OPTIONS)) 或没有列表理解或需要\nfor option in OPTIONS: print(option)
  • 嗨,杰克,谢谢。我只是想看看如何在一个更简单的示例中使用 f-string 方法,以便我可以理解书中的示例。你是完全正确的,不需要 f 字符串提供我需要的输出它只是为了帮助我学习 f 字符串,因为在 Richard 和埃里克的回答。

标签: python f-string format-string


【解决方案1】:
def print_options():
    print('\n'.join(option.title() for option in OPTIONS))

# output: 
# Rock 
# Paper 
# Scissors

由于你不需要索引,f-string和枚举可以完全删除。

【讨论】:

  • 抱歉,我没有正确格式化所需的输出,现在已经修复了,每个列表元素都应该在一个新的行上。
  • 嗨,理查德,我会接受你的。出于兴趣,它与 f_string 的外观如何(即使它是多余的)。我问是因为我不明白为什么教科书在这么多括号内有 fstring 的枚举索引部分,例如({I})
  • @Windy71 在 f 字符串中,要引用名称(变量或函数),您需要将其包装在 {} 中(有关更多信息,请参阅 realpython.com/python-f-strings/#simple-syntax)。围绕这些的额外() 仅用于打印输出样式目的,即(1) 而不仅仅是1
  • 啊,你的明星,我从来没有得到过。谢谢理查德,这是一个绝妙的答案。
【解决方案2】:
OPTIONS = ('Rock', 'Paper', 'Scissors')
def _print_choices(OPTIONS, sep='\n'):
    print(sep.join([f'{choice.title()}' for choice in OPTIONS]))

输出:

>>> _print_choices(OPTIONS, '\n'):
Rock
Paper
Scissors

【讨论】:

  • 抱歉,我没有正确格式化所需的输出,现在已经修复了,每个列表元素都应该在一个新的行上。
  • 试试这个。也使它更具动态性(将选择和分隔符作为参数传递)
  • 非常感谢 Eric Jin,非常感谢!
猜你喜欢
  • 2022-01-20
  • 2020-05-02
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多