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