python:打印数字,如两个自然数的乘积

时间:2018-02-09 17:15:32

标签: python python-3.x python-2.7

抱歉这里的菜鸟。 我希望有一个函数,对于给定的自然数,它将打印出所有可能的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

感谢您的帮助和可能的解释

2 个答案:

答案 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 >= 0r[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))