【问题标题】:Counting and generating perfect squares计算和生成完美的正方形
【发布时间】:2010-11-12 03:52:18
【问题描述】:

我需要一些关于如何编写 Python 程序的建议,它会以列表格式为您提供前 n 个完美正方形的列表。输出应如下所示:

多少个正方形?:5 [1、4、9、16、25]

这是我目前所拥有的:

n = int(raw_input("How many squares? "))

现在对于下一部分,我需要创建前 n 个正方形的列表。关于如何做的任何建议?感谢您的宝贵时间和建议。

【问题讨论】:

  • @justin:有两个问题。了解算法并在python中实现它。提供算法,然后指导你如何用python实现它
  • 感谢所有帮助贾斯汀完成大学作业的人:您的解决方案就是他的解决方案。贾斯汀已经被课程工作人员监控了一段时间,不久将与院长会面,讨论他未来的学术生涯。

标签: python perfect-square


【解决方案1】:

使用列表推导:

[ a*a for a in xrange(1, n + 1) ]

【讨论】:

    【解决方案2】:

    现在对于下一部分,我需要开始创建前 n 个正方形的列表。关于如何做的任何建议?感谢您的宝贵时间和建议。

    这是可以帮助您的。对于另一部分,请发布您的算法。

    使用范围生成列表:

    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    使用列表推导得到 x^2 的列表

    >>> [x**2 for x in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> 
    

    Novikov 提供了一个更优雅的答案

    【讨论】:

      【解决方案3】:
      n = int(raw_input("How many squares? "))
      map((2).__rpow__, range(1, n+1))
      

      from operator import mul
      n = int(raw_input("How many squares? "))
      map(mul, *[range(1, n+1)]*2)
      

      【讨论】:

        【解决方案4】:

        有人提到了生成器——这就是你在这种情况下使用它们的方式:

        def sq(n):
            i=0
            while i<n:
                i+=1
                yield i*i
        
        if __name__=="__main__":
            n = int(raw_input("How many squares? "))
            print list(sq(n))
        

        【讨论】:

          【解决方案5】:

          或者使用 map 和 lambda 函数

          n = int(raw_input("How many squares? "))
          map(lambda x: x*x, range(n))
          

          如果你想从 1 开始

          map(lambda x: x*x, range(1, n+1))
          

          【讨论】:

          【解决方案6】:

          代码:

          list_squares=[]
          for a in xrange(1, n+1):
           list_squares.append(a*a)
          print list_squares
          

          其中 n 是用户输入的他想要的正方形数量。

          如果n=5 则输出如下:

          [1、4、9、16、25]

          【讨论】:

            猜你喜欢
            • 2010-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-08-23
            • 2016-12-26
            • 2020-05-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多