0

ユーザーが数値のリストを入力できる関数を作成しようとしています。次に、[1,2,3] から [1,4,9] のように、各数値が 2 乗されます。これまでのところ、私のコードは次のとおりです。

def squarenumber():
    num = raw_input('Enter numbers, eg 1,2,3: ').split(',')
    print [int(n) for n in num if n.isdigit()]  ##display user input
    list = []
    for n in num:
        list += int(n)*int(n)
    print list;   

x = squarenumber()

しかし、「int」オブジェクトは反復可能ではないというエラーが表示されます。私はさまざまな方法を試しましたが、まだ手がかりがないので、誰かが私を助けることができれば、私は大歓迎です.

4

5 に答える 5

1

まず、list を変数として使用せず、lst を使用します。また、元のコードのリストに追加されていない値をインクリメントしています。リストを作成するには、lst.append() を使用します。また、リストを返す必要があります

def squarenumber():
  num = raw_input('Enter numbers, eg 1,2,3: ').split(',')
  print [int(n) for n in num if n.isdigit()]  ##display user input
  lst = []
  for n in num:
    if n.isdigit():
      nn = int(n)
      lst.append(nn*nn)
  print lst
  return lst  

x = squarenumber()
于 2014-05-09T14:22:17.210 に答える
0

別のループの代わりにリスト内包表記を使用して、数値の 2 乗をリストに追加することで、目的の出力を得ることができます。リストを変数名として使用しないでください

def squarenumber():
    num = raw_input('Enter numbers, eg 1,2,3: ').split(',')
    print num # display user input
    lst= [int(n)* int(n) for n in num if n.isdigit()]  
    print lst  # display output

x = squarenumber()
于 2014-05-09T15:09:42.447 に答える
0
def squarenumber(inp):
    result = [i**2 for i in inp]
    return result

>>>inp = [1,2,3,4,5]
>>>squarenumber(inp)
[1, 4, 9, 16, 25]
于 2014-05-09T14:30:20.430 に答える