方形数字列表用户输入Python

时间:2014-05-09 14:19:07

标签: python function numbers perfect-square

我正在尝试编写一个函数,用户可以输入一个数字列表,然后每个数字得到平方,例如[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'对象不可迭代。我尝试了不同的方法,但仍然没有线索,所以如果有人能帮助我,我会非常感激。

5 个答案:

答案 0 :(得分: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()

答案 1 :(得分: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]

答案 2 :(得分: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()

答案 3 :(得分: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]

答案 4 :(得分: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()