如何使用范围和字符串格式在函数中打印分数?

How to print fractions in a function using range and string formatting?

Write a function displayFractions() that has one integer parameter: n. The function will DISPLAY (not return) the fractions for 1/n, 2/n, 3/n, …, n/n. The function must use range() function in the for loop and format string to display exactly 3 decimal places. The width does not have to be specified, so that number is not required. The values should print on the same line, each value separated with a comma followed by a space

这是我得到的:

def displayFractions(n):
    for i in range(n, n+1):
        print('{:.3f}'.format(1/i, i/i), end=', ')

我知道我对 range()format() 的论点有误,但我完全不知道该插入什么。我读了又读了教科书,看了几十个例子,还是想不通。

你快到了。您的字符串上只有 one 占位符槽,因此您只传入一个参数。您的 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))

由于有人已经修复了您的代码,我将给出一个使用 Python.

中其他一些简洁内容的答案
def displayFractions(n):
    print(', '.join( '{:.3f}'.format(i/n) for i in range(1, n+1) ))

str.join 方法对于在可迭代项之间插入文本非常有用。例如:

>>> ', '.join(range(10))
'0, 1, 2, 3, 4, 5, 6, 7, 8, 9'

在我的函数中,生成器被传递给 str.join 方法。这避免了为分数创建中间列表。

知道了!

def displayFractions(n):
    for i in range(1, n+1):
        print('{:.3f}'.format(i/n, i/i), end=', ') 

感谢大家的帮助。