【问题标题】:Square list of numbers user input Python用户输入Python的数字平方列表
【发布时间】:2014-06-27 07:57:12
【问题描述】:

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

【问题讨论】:

  • 不要将您的列表命名为list,并删除;。错误带有行号。
  • 为什么你 print 明智地过滤和转换数据,然后忽略它并返回原始输入?
  • 抱歉还是python新手,没注意,以后会注意的

标签: python function numbers perfect-square


【解决方案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()

【讨论】:

  • 很好,这正是我想要的,对我的代码进行小幅调整并有理由,谢谢!
  • @user3620442 如果这是你想要的,你可以点击接受按钮 (:-)
【解决方案2】:

对于列表,您应该使用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]

【讨论】:

  • 不要使用list作为变量名
  • @jonrsharpe,我没有注意到这一点。非常感谢
【解决方案3】:
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】:

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

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-12-25
        • 2011-06-07
        • 2021-10-02
        • 1970-01-01
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        相关资源
        最近更新 更多