按Python列出超出范围的赋值索引

按Python列出超出范围的赋值索引,python,Python,你能帮我吗?列表分配索引超出范围。我无法修复。像Java这样的语言要求您创建特定长度的数组。Python允许您初始化一个列表,可以是空的,也可以是填充的,然后您可以简单地将项目附加到列表中。如果您想创建一个长度为n+1的列表a,每个元素中都包含一个0,您可以通过列表理解来实现:a=[0表示范围(n+1)中的项] 您不应该使用sum作为变量,因为sum是Python内置函数。但是,如果您确实选择重写内置函数,则必须首先为其分配一些内容。用sum+=a[i]*a[i]向sum添加一个数字会尝试将a[

你能帮我吗?列表分配索引超出范围。我无法修复。

像Java这样的语言要求您创建特定长度的数组。Python允许您初始化一个列表,可以是空的,也可以是填充的,然后您可以简单地将项目附加到列表中。如果您想创建一个长度为
n+1
的列表
a
,每个元素中都包含一个0,您可以通过列表理解来实现:
a=[0表示范围(n+1)中的项]

您不应该使用
sum
作为变量,因为
sum
是Python内置函数。但是,如果您确实选择重写内置函数,则必须首先为其分配一些内容。用
sum+=a[i]*a[i]
sum
添加一个数字会尝试将
a[i]
的平方添加到一个函数中,但这不起作用

请记住,Python列表中的负数索引与
a[i-2]
一样,当
i
小于2时,从列表末尾开始:
mylist[-1]
是列表中的最后一项,
mylist[-2]
是倒数第二项,依此类推。因此,列表中的第一项a 1被设置为最后一项和倒数第二项的总和,即0。第二个项目也是1,设置为第一个项目(现在是0)和最后一个项目(仍然是0)的总和,也是0。现在你的名单全是零

我对代码中产生错误的部分做了一些更改,并添加了注释,以便您可以看到每个部分的功能,给出合理的输入,如n=3和m=5:

        a[i]=0

IndexError: list assignment index out of range

所以这个程序除了打印
1

之外没有做什么,不管你认为
a=[n+1]
做什么,它都不会做。它创建一个长度为1的列表,其中包含值
n+1
。j=1 n=int(input())标志=[]*29 a=[]*29表示范围内的i(len(a)):a[i]=1.0/(i+2)表示范围内的j(2**29):temp=j index=0 sum=0,而temp>0和indexlist赋值索引超出范围我无法理解没有格式的代码块。把它编辑成你原来的问题,它会更清晰。
n=int(input())
m=int(input())
a=[0 for item in range(n+1)] # initialize all to 0
mysum = 0 # initialize a sum that doesn't override the builtin
a[0]=a[1]=1 # set first 2 elements to 1
for i in range(n+1): # for every item in a,
    a[i]=a[i-1]+a[i-2] # this ends up setting everything to 0
for i in range(n+1): # for every item in a,
    mysum+=a[i]*a[i] # add 0*0 to the sum
print((mysum+1)%m) # 1 modulo anything greater than 1 is 1, so this prints 1
n=int(input())
m=int(input())
a=[0 for item in range(n+1)] # initialize all to 0
mysum = 0 # initialize a sum that doesn't override the builtin
a[0]=a[1]=1 # set first 2 elements to 1
for i in range(n+1): # for every item in a,
    a[i]=a[i-1]+a[i-2] # this ends up setting everything to 0
for i in range(n+1): # for every item in a,
    mysum+=a[i]*a[i] # add 0*0 to the sum
print((mysum+1)%m) # 1 modulo anything greater than 1 is 1, so this prints 1
# Get input values
n = 10
m = 100

# Initialize list
fib = [1,1]
# Fibonacci sequence of length n
for i in range(2,n): # Adjust the number of iterations to your problem
    fib.append(fib[-1]+fib[-2])

# List comprehension for creating the "squares" list and getting its sum
result = sum([fib[i]**2 for i in range(len(fib))]) % m

print fib
print result