我无法让这段代码工作,并且尝试了很多事情

  • 本文关键字:工作 段代码 代码 python
  • 更新时间 :
  • 英文 :


这是我正在研究的 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。我想你是在假设arrnum_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

最新更新