-1

这是我得到的错误for i in range(len(n))

TypeError: object of type 'int' has no len()

我在这里看到了其他帖子,但还没有找到解决方案。
我很困惑。如果您知道这里发生了什么,请发表评论。

这是我的代码:

#ch6.ex11.py

def squareEach(x):
    sqrt = x*x
    return sqrt


def main():
    n = []
    n = eval(input("Enter a list of numbers to be squared seperated by comma:\n"))
    i = 1
    sqrtn = ()

    for i in range(len(n)):
        sqrtn = squareEach(n)
        ++i

    print("Here's your results: ",sqrtn)

main()
4

3 回答 3

8

n是一个整数。你要

for i in range(n):
于 2013-03-03T05:39:11.087 回答
1

看来您可能想要这样做:

def squareEach(n):
    squares = []
    for i in n:
        squares.append(i*i)
    return squares


def main():
    msg = "Enter a list of numbers to be squared seperated by comma:\n"
    n = list(eval(input(msg)))
    sqrtn = squareEach(n)

    print("Here's your results: ",sqrtn)

main()

好吧,您的代码有一些问题:

  1. 您应该将您的列表更改为列表,因为您正在迭代它。
  2. 在 Python 的 for 循环中,您不需要循环计数器(除非它对程序有一些用处,在这种情况下它不是)
  3. i++在 Python 中无效。与它等效的 Python 是i += 1.

此外,Python 执行脚本中的所有代码行,因此您不需要main()在每个 Python 程序中都使用函数,但在某些情况下您可能想要使用它。

你可以做的其他事情:

def main():
    msg = "Enter a list of numbers to be squared seperated by comma:\n"
    n = list(eval(input(msg)))
    squares = [i**2 for i in n] # list comprehension
main()
于 2013-03-03T06:41:19.657 回答
1

这就是我猜你正在尝试做的事情:

def squareEach(x):
    sqrt = x*x
    return sqrt
def main():
   n = list(map(int, input("Enter a list of numbers to be squared separaded by a comma").split(',')))
   sqrtn = []
   for i in range(len(n)):
       sqrtn.append(squareEach(n[i]))
   print("Here's your results: ",sqrtn)
main()

或者您可以将 for 循环用作:

for i in n:
    sqrtn.append(squareEach(i))

或平方您可以执行的每个元素:

sqrtn = [x**2 for x in n]
于 2013-03-03T05:54:18.330 回答