编写一个具有一个整数参数的函数
displayFractions()
:n
。该函数将显示(不返回)1 / n,2 / n,3 / n,...,n / n的分数。该函数必须在range()
循环和格式字符串中使用for
函数才能正好显示3位小数。不必指定宽度,因此不需要该数字。值应打印在同一行上,每个值用逗号分隔后跟空格
以下是我所拥有的:
def displayFractions(n):
for i in range(n, n+1):
print('{:.3f}'.format(1/i, i/i), end=', ')
我知道我对range()
和format()
有错误的论据,但我完全不知道该插入什么。我已经阅读并重新阅读了教科书,并查看了几十个例子,但无法弄清楚这一点。
答案 0 :(得分:1)
由于有人已经修复了你的代码,我会给出一个在Python中使用其他一些整洁的东西的答案。
def displayFractions(n):
print(', '.join( '{:.3f}'.format(i/n) for i in range(1, n+1) ))
str.join
方法非常有助于在iterable中的项之间插入文本。例如:
>>> ', '.join(range(10))
'0, 1, 2, 3, 4, 5, 6, 7, 8, 9'
在我的函数中,生成器被传递给str.join
方法。这样可以避免为分数创建中间列表。
答案 1 :(得分:0)
你快到了。您的字符串上只有一个占位符插槽,因此您只传入一个参数。你的range()
应该从1开始(第一个参数):
def displayFractions(n):
for i in range(1, n + 1):
print('{:.3f}'.format(1/i), end=', ')
这会打印一个额外的逗号。你可以忽略循环中的最后一次迭代,只需在循环外添加一个额外的print()
调用来打印最后一个分数:
def displayFractions(n):
for i in range(1, n):
print('{:.3f}'.format(1/i), end=', ')
print('{:.3f}'.format(1/n))
答案 2 :(得分:0)
知道了!
def displayFractions(n):
for i in range(1, n+1):
print('{:.3f}'.format(i/n, i/i), end=', ')
感谢大家的帮助。