这是我正在研究的 Python 代码 2 小时的睡眠请帮助我让它工作 代码的问题是编写一个程序,将列表的所有元素相乘到偶数索引处。
def EvenProduct(arr, n):
even = 1
for i in range (0,n):
if (i % 2 == 0):
even *= arr[i]
print("Even Index Product : " , even)
# Driver Code
arr = int(input("Enter the size of the list "))
print("n")
num_list = list(int(num) for num in input("Enter the list items separated by space ").strip().split())[:arr]
print("User list: ", num_list)
n = len(arr)
EvenProduct(arr, n)
我得到了这个错误
Traceback (most recent call last):
File "<string>", line 26, in <module>
TypeError: object of type 'int' has no len()
一个问题是你通过以下方式阅读arr
:
arr = int(input("Enter the size of the list "))
但后来你试图在arr
上打电话给len()
:
n = len(arr)
所以,由于arr
已经是一个int
,它没有长度。这是一个单一的项目。
我想你的意思是使用num_list
而不是arr
.如果是这种情况,那么程序的最后两行应该是:
n = len(num_list)
EvenProduct(num_list, n)
特别是因为,在num_list
中,您指的是arr[i]
如果它是int
则无效arr
。我想你是在假设arr
是num_list
,或者也许在某个时候你改变了名字。
你的意思是写n = len(num_list)
.
值arr
是一个整数,因此,如错误所示,它没有长度。
无需将长度传递到函数中,您可以使用len(arr)
在内部计算它。
可以使用枚举全局函数同时获取索引和值。
#!/usr/bin/env python
def evens_product(l):
product = 1
for i,v in enumerate(l):
if i % 2 == 0:
product *= v
return product
result = evens_product([1,2,3,4,5,6])
print(result) # 15