乘以一系列数字 - Python2.x

时间:2015-10-21 18:25:05

标签: python python-2.7

我为初学者问题道歉,我自学。我做了一些搜索,只发现了阶乘。我正在寻找的是,给定一个范围(2,10)来将所有这些数字相乘:

在上面的2-10例中我们会有这样的事情:

  

2 * 1 = 2

     

2 * 2 = 4

     

...

     

3 * 1 = 3

     

3 * 2 = 4

...

等等,直到您完成了清单。

我有什么:

def product(number):
    for i in range(2,10):
        return number * i

for number in range(2,10):
    print product(number)

这似乎只适用于我的2个案例。所以我到了18,它没有回过头来移动到下一个整数。

4 个答案:

答案 0 :(得分:0)

这是因为您在完成product()函数的循环之前返回。

def product(number):
    out = []
    for i in range(2,10):
        out.append(number * i)
    return out

for number in range(2,10):
    print(product(number))

答案 1 :(得分:0)

正如其他人所指出的那样,你在第一次迭代时返回值,所以你的循环永远不会被夸大。

您可以将其作为generator执行,这样做会更好,如评论中所建议的那样,或者您可以使用列表解析返回值列表:

def product(number):
    return [number * i for i in range(2, 10)]

在这种情况下你当然可以抛弃这个功能,但这不是问题所在。

答案 2 :(得分:0)

def product(number):
    for i in range (2, 10):
        print("{} * {} = {}".format(i, number, (i * number)))

for n in range(2, 10):
    product(n)

这将执行相同的功能,但更清洁一点。格式化适用于python 3.x,但它可以在2.x中使用。

通过使用.format方法,您可以看到正在增加的内容以及结果。

正如其他人所指出的那样,发电机是一种更好的方法。

答案 3 :(得分:0)

import itertools
for x, y in itertools.product(xrange(2, 10), xrange(2, 10)):
    print '{} * {} = {}'.format(x, y, x*y)