抱歉这里的菜鸟。 我希望有一个函数,对于给定的自然数,它将打印出所有可能的2个自然数对,其产品可以输入。
我认为它可能是这样的,但仍然无法弄清楚如何正确地写它:
(我的代码输出中缺少最后一个输出行)
def print_products(n):
for i in range(1, n):
if n % i == 0:
print(n, "=", i, "*", int((n/i)))
输出应该是这样的:
print(print_products(36))
36 = 1 * 36
36 = 2 * 18
36 = 3 * 12
36 = 4 * 9
36 = 6 * 6
36 = 9 * 4
36 = 12 * 3
36 = 18 * 2
36 = 36 * 1
感谢您的帮助和可能的解释
答案 0 :(得分:2)
range()
函数不包含结束(停止)值,因此i
实际上永远不会n
。使用+1
很容易纠正。您还应该使用整数除法(//
),因为它比将float
传递到int()
更整洁。
发挥你的作用:
def print_products(n):
for i in range(1, n+1):
if n % i == 0:
print(n, "=", i, "*", n//i)
它现在有效:
36 = 1 * 36
36 = 2 * 18
36 = 3 * 12
36 = 4 * 9
36 = 6 * 6
36 = 9 * 4
36 = 12 * 3
36 = 18 * 2
36 = 36 * 1
我们可以从documentation看到range()
不包含stop
参数:
对于肯定步骤,范围
r
的内容由公式r[i] = start + step*i
确定,其中i >= 0
和r[i] < stop
。
正确的术语是i
不达到 上限(stop
)。
答案 1 :(得分:1)
只需在范围函数中使用n+1
:
def print_products(n):
for i in range(1, n + 1):
if n % i == 0:
print(n, "=", i, "*", (n/i))