python - 列表索引超出范围;使用定义
问题描述
我是 python 新手,我不知道为什么我一直遇到错误。我已经指出了我会遇到错误的地方。
def lis_add(lis, element):
lis = [ ]
lis.append(element)
return lis
def s_lis(lis):
square = [ ]
for i in range(len(lis)):
square.append(lis[i] * lis[i])
return square
def main():
lis = [ ]
for i in range(10):
x = eval(input("Enter a number: "))
lis = lis_add(lis, x)
s = [ ]
s = s_lis(lis)
print("******* the input list *********")
for i in range(10):
print(lis[i]) *#error*
*#list index out of range*
print("******** the sqaure list *********")
for i in range(len[s]):
print(s[i])
main() *#for some odd reason, I would also get an error here too*
解决方案
问题:
在此处查看此代码:
def lis_add(lis, element):
lis = [ ]
lis.append(element)
return lis
更具体地说,在这里:
lis = [ ]
每次调用时它都会重置列表以使其没有元素。因此,调用此列表时,您的列表的大小仅为 1:
for i in range(10):
print(lis[i]) *#error*
并且 main 有一个错误,因为 main 内部有一个错误。
其他建议:
- 使用
int(input())
,不使用eval
。 - 你写,,
for i in range(len[s]):
但它应该是for i in range(len(s)):
- 使用
print(lis[:10])
代替for i in range(10): print(lis[i])
和print(s)
代替for i in range(len(s)): print(s[i])
- 不要使用
list[i]*list[i]
,而是使用list[i]**2
. 另外,在square.append(lis[i] * lis[i])
- 使用列表理解,即
square = [x**2 for x in lis]
和lis = [input("Enter a number: ") for i in range(10)]
- 删除这段代码,没有必要:
s = [ ]
此外,main
最后一行有一个选项卡,它在里面被调用main
。所以,main
正在调用main
. 这不会返回错误,它称为递归,有时非常有用。但是,这里不是。所以我建议删除该选项卡。
推荐阅读
- reactjs - PropTypes.exact 和 PropTypes.shape 之间的区别
- python-3.x - 如何在张量流顺序模型中添加 CRF 层?
- java - 试图建立一个列表以在多个地方使用
- jhipster - 从管理前端隐藏 jhipster 配置文件或参数
- javascript - JS不会在txt中写入信息
- python - 使用 Numpy 生成 N 维矩阵
- java - 在 java 中用什么代替 finalize()
- java - RecyclerView 项目不可见
- jquery - core.js:9110 ERROR TypeError: $(...).flowchart is not a function
- roku - 为 Roku 创建基本时钟应用程序时遇到问题