0

我正在尝试编写一个函数,用户可以在其中输入数字列表,然后将每个数字平方,例如 [1,2,3] 到 [1,4,9]。到目前为止,我的代码是这样的:

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

对于列表,您应该使用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:
        lst.append(int(n)*int(n))
    print lst

x = squarenumber()

[Running the code]
Enter numbers, eg 1,2,3:  1,2,3
[1, 2, 3]
[1, 4, 9]
于 2014-05-09T14:21:20.740 回答
0

由于您使用列表理解来打印输入,我认为您可能喜欢使用另一个解决方案的解决方案:

def squarenumber():
    num = raw_input('Enter numbers, e.g., 1,2,3: ').split(',')
    print [int(n) for n in num if n.isdigit()]
    print [int(n)**2 for n in num if n.isdigit()]

x = squarenumber()
于 2014-05-09T14:25:42.533 回答
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 回答
0

您可以使用列表推导获得所需的输出,而不是另一个循环将数字的平方附加到列表中。不要使用列表作为变量名

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 回答