这是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()发布于 2022-09-16 16:24:32
有一个问题是,您在arr中通过以下方式阅读:
arr = int(input("Enter the size of the list "))但随后,您尝试调用len() on arr
n = len(arr)因此,由于arr已经是一个int,所以它没有长度。这是一个单一的项目。
我想你是想使用num_list而不是arr。如果是这样的话,那么程序的最后两行应该是:
n = len(num_list)
EvenProduct(num_list, n)尤其是在num_list中,您所指的是arr[i],如果arr是int,则它是无效的。我认为您假设arr是num_list,或者在某个时候您更改了名称。
发布于 2022-09-16 16:26:05
你想写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) # 15https://stackoverflow.com/questions/73747696
复制相似问题