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

python:打印两个自然数的乘积,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,对不起,这里没有。 我想有一个函数,对于一个给定的自然数,将打印出所有可能的2个自然数对,其乘积作为输入 我想可能是这样,但还是不知道如何正确地书写: (我的代码输出中缺少最后一行输出) 输出应该是这样的: 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个自然数对,其乘积作为输入

我想可能是这样,但还是不知道如何正确地书写:

(我的代码输出中缺少最后一行输出)

输出应该是这样的:

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
感谢您的帮助和可能的解释

函数的
range()
不包含结束(stop)值,因此
i
实际上从来都不是
n
。这很容易用
+1
纠正。您还应该使用整数除法(
/
),因为它比将
浮点值
传递到
int()
更简洁

发挥你的作用:

def print_products(n):
    for i in range(1, n+1):
        if n % i == 0:
            print(n, "=", i, "*", n//i)
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

从中可以看出,
range()
不包括
stop
参数:

对于正阶跃,范围
r
的内容由公式
r[i]=start+step*i
确定,其中
i>=0
r[i]


正确的术语是说,
i
达到上限(
停止
)。

只需在范围函数中使用
n+1

def print_products(n):
    for i in range(1, n+1):
        if n % i == 0:
            print(n, "=", i, "*", n//i)
def print_products(n):
    for i in range(1, n + 1):
        if n % i == 0:
            print(n, "=", i, "*", (n/i))

停在但不包括,
n
使用
范围(1,n+1)
,查看它是否按您的预期工作。这是一个简单的一次关闭错误。您的for循环短停一次。只需像其他人所说的那样在上限中添加一个,这就是为什么您将这个问题同时标记为
python-3.x
python2.7
?@潜伏者在python 3中,
print
是一个函数。实际上,如果要编写新的Python2代码,就应该从中导入并使用此函数<代码>未来
。平心而论,OP把这两个都标记为2和3…哇,太快了,非常感谢@请接受(灰色-->绿色勾号)表示感谢!非常感谢。