-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(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))

または、実行できる各要素を2乗します。

sqrtn = [x**2 for x in n]
于 2013-03-03T05:54:18.330 に答える
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 に答える