Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一系列数字相乘-Python2.x_Python_Python 2.7 - Fatal编程技术网

将一系列数字相乘-Python2.x

将一系列数字相乘-Python2.x,python,python-2.7,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

我为这个初学者的问题道歉,我在自学。我做了一些搜索,只找到了阶乘。我要寻找的是,给定一个范围(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,它不会返回到下一个整数。

这是因为您在完成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))

这是因为您在完成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))

正如其他人指出的,您在第一次迭代时返回值,因此您的循环永远不会被检验

您可以按照注释中的建议,将其作为一个更好的列表来执行,也可以简单地返回带有列表理解的值列表:

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

在这种情况下,您当然可以放弃函数,但这不是问题所在。

正如其他人所指出的,您在第一次迭代时返回值,因此您的循环永远不会被检验

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

for n in range(2, 10):
    product(n)
您可以按照注释中的建议,将其作为一个更好的列表来执行,也可以简单地返回带有列表理解的值列表:

def product(number):
    return [number * i for i in range(2, 10)]
在这种情况下,您当然可以放弃函数,但这不是问题所在

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

for n in range(2, 10):
    product(n)
这将执行相同的功能,但有点干净。格式是针对Python3.x的,但在2.x中可以使用

通过使用.format方法,您可以查看要乘以的内容以及结果

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

import itertools
for x, y in itertools.product(xrange(2, 10), xrange(2, 10)):
    print '{} * {} = {}'.format(x, y, x*y)
这将执行相同的功能,但有点干净。格式是针对Python3.x的,但在2.x中可以使用

通过使用.format方法,您可以查看要乘以的内容以及结果


正如其他人所指出的,生成器是一种更好的方法。

看起来需要为
i
变量添加一个计数器。将return语句移到循环之外<代码>对于范围(2,10)中的i:返回编号*i只运行一次,因为
返回
会中断循环。或者将
return
更改为
yield
,宝贝,你就有了一台发电机@Dave,yield->看起来需要为
i
变量添加一个计数器。将return语句移到循环之外<代码>对于范围(2,10)中的i:返回编号*i只运行一次,因为
返回
会中断循环。或者将
return
更改为
yield
,宝贝,你就有了一台发电机@戴夫,屈服->总有一天会有人“把这个发电机的东西卖给我!”这是一件可爱的事情,但可能不是作为乞丐学习的最好的事情(不确定你的背景)。这是对大多数概念进行全面解释的好方法。另外,Stack Overflow有一些很好的答案,搜索它们,你不会后悔的@DaveKalaluhi您可以将生成器过于简化,认为它在功能上等同于一个列表,但它不是一次知道所有的值,而是只知道如何生成您想要的下一个值。优点:内存消耗更低,可能使用更快;缺点:无法重复使用,在某些情况下不如列表灵活。将返回行更改为以下内容将转换为使用生成器:
返回(数字*i表示xrange(2,10)中的i))
。注意括号,
[]
,改为括号,
range
改为
xrange
,返回一个生成器。总有一天会有人把这个生成器的东西展示给我!:)这是一件可爱的事情,但可能不是作为乞丐学习的最好的事情(不确定你的背景)。这是对大多数概念进行全面解释的好方法。另外,Stack Overflow有一些很好的答案,搜索它们,你不会后悔的@DaveKalaluhi您可以将生成器过于简化,认为它在功能上等同于一个列表,但它不是一次知道所有的值,而是只知道如何生成您想要的下一个值。优点:内存消耗更低,可能使用更快;缺点:无法重复使用,在某些情况下不如列表灵活。将返回行更改为以下内容将转换为使用生成器:
返回(数字*i表示xrange(2,10)中的i))
。注意括号,
[]
,改为括号,
range
改为
xrange
,返回生成器。
import itertools
for x, y in itertools.product(xrange(2, 10), xrange(2, 10)):
    print '{} * {} = {}'.format(x, y, x*y)