我为初学者问题道歉,我自学。我做了一些搜索,只发现了阶乘。我正在寻找的是,给定一个范围(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,它没有回过头来移动到下一个整数。
答案 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)