怎么会。{} ohm{}'.format(total, 's' * (total > 1)) in the function?



我一直在进行Python挑战以学习该语言。其中之一如下:

创建一个函数,该函数采用电阻值数组串联,并计算电路单位为欧姆

注:

  • 所有输入都将有效
  • 值<=的奇异欧姆1.(例如15欧姆、0.8欧姆(

我的问题解决方案是:

def series_resistance(lst):
if sum(lst) > 1:
return str(sum(lst)) + " ohms"
else:
return str(sum(lst)) + " ohm"

看看其他人是如何解决的,我发现:

def series_resistance(lst):
total = sum(lst)
return '{} ohm{}'.format(total, 's' * (total > 1))

他们版本的函数是如何工作的?

如果您要问format在所提供的示例'{} ohm{}'.format(total, 's' * (total > 1))中是如何工作的,那么Python将用作为format函数参数提供的值替换字符串中的{}

在该示例中,根据total的值(当对字符串'string' * True == 'string''string' * False == ''进行操作时(,total作为第一个,'s'''作为第二个。

从Python 3.6中,您可以使用f-string来实现相同的结果:

def series_resistance(lst):
total = sum(lst)
return f"{total} ohm{'s'*(total > 1)}"

最新更新