我一直在进行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)}"