Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.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
如何用python编写循环代码_Python_Python 3.x - Fatal编程技术网

如何用python编写循环代码

如何用python编写循环代码,python,python-3.x,Python,Python 3.x,我对python中的循环有一个问题。我想用以下算法创建一个列表x[X0,X1,….Xn]: X1=X0-(5+X0*2); X2=X1-(5+X1*2);..... 我试过了,但结果不正确 a=list(np.empty(10)) a[0]=1 for i in range(10): a.append(a[i]-(5+a[i]*2)) print (a [i]) 如果手动迭代,结果将给出: [1,-6,1,-6, ....] 但在循环之后,它给出: [1,-

我对python中的循环有一个问题。我想用以下算法创建一个列表x[X0,X1,….Xn]:

X1=X0-(5+X0*2); X2=X1-(5+X1*2);.....
我试过了,但结果不正确

a=list(np.empty(10))
a[0]=1
for i in range(10):
        a.append(a[i]-(5+a[i]*2))
        print (a [i])
如果手动迭代,结果将给出:

[1,-6,1,-6, ....]
但在循环之后,它给出:

[1,-1.29074375768e-231,2.19254982219e-314,.....]

循环在C语言中很简单,但我不了解Python的功能,如果您有什么想法的话?

我建议您阅读Python中的函数、列表和循环,因为从您的问题来看,您似乎不太了解它们

您的代码当前无法运行有几个原因,但它们都很容易修复

首先,使用numpy列表启动一个列表,这是不必要的

a = list(np.empty(10))
可以简单地变成

a = list()
或者更简单一点

a = []
接下来,不是一个错误,而是一个建议

a[0] = 1
可以删除,而在初始化列表时,将其作为第一项

a = [1]
之后,您的代码应该可以工作。总而言之:

n = 10 # or whatever number you want
a = [1]
for i in range(n - 1):
    a.append(a[i] - (5 + a[i] * 2))
如果您希望将其作为功能:

def formula_list(n):
    a = [1]
    for i in range(n - 1):
        a.append(a[i] - (5 + a[i] * 2))
    return a

除了单个元素之外,没有理由在列表的开头添加任何内容。在C语言中,您必须预先决定列表中需要多少元素,但在Python中并非如此,因此执行
list(np.empty(10))
会创建一个列表,其中包含十个无意义的元素,这些元素正阻碍您

a = [1] # This creates a list that starts off with the element 1.
for i in range(10):
    a.append(a[i] - (5 + a[i] * 2))
    print (a[i])

问题在于
list(np.empty(10))
并没有做您认为它能做的事情。您希望它返回一个包含10个零的列表,但实际上它返回一个包含10个“随机”数的列表(实际上,它返回一个包含10个未初始化值的列表)

来自numpy:

,与零不同,不会将数组值设置为零,并且可能 因此,速度要稍微快一点。另一方面,它需要 用户手动设置数组中的所有值,并且应使用 小心

(强调我的)

相反,您只需创建一个包含单个元素的列表,
1
,然后继续:

a = [1]
for i in range(10):
    a.append(a[i] - (5 + a[i] * 2))
print(a)
# [1, -6, 1, -6, 1, -6, 1, -6, 1, -6, 1]

它们会以你安排方程式的方式不断打印出-6和1,因此:

a = [1]

iti = 0

while(True):
    thing = a[iti]-(5+(a[iti]*2))
    a.append(thing)
    iti+=1
    print(thing)

我选择不使用for循环来显示一个更容易理解的示例,但是如果您愿意,您仍然可以使用它。

这显然不是同一个公式-为什么您会期望相同的结果?抱歉,我更正了。您仍然需要描述它是如何工作的。您收到的输出是什么?您期望的是什么?值是x[0]=1为什么是下一票如果我的回答对你没有帮助,请告诉我why@SilvioMayolo现在就修好了。我猜OP被否决是因为我说他需要看loopsNot而不是被否决的投票者,但这个答案只是在OP上抛出了一个有效的代码。更有益的是(对OP和未来的读者来说)包括解释为什么OP代码不起作用。@DeepSpace将改进我的答案