Python:从0到16的幂的所有2的幂

时间:2017-04-22 08:45:37

标签: python loops math exponent

我试图用Python编程,这样我就可以将2的结果打印到0到16之间的每个数字的幂。我到目前为止有下面的代码,但它只能打印2的结果电源16,没有任何东西。如何用它打印其他答案?

n = 2
exponent = 16

while exponent < 16+1:
  n = n ** exponent
  exponent = exponent + 1
  print (n)

4 个答案:

答案 0 :(得分:4)

2的幂的最佳方法是在1上使用位移,这在这种情况下比取幂更快。

那就是说,我不建议使用while循环,而是推荐for循环,甚至更好:使用列表推导生成您的值列表(避免所有变量和不需要的方面)效果,因while等而无限循环......)和单行:

print([1<<exponent for exponent in range(17)])

结果:

[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536]

答案 1 :(得分:2)

在代码中进行以下更改

  1. exponent最初应设为0
  2. 结果应存储在循环中的单独变量中,而不是n
  3. 以下是正确的代码版本:

    n = 2
    exponent = 0
    
    while exponent < 16+1:
      res = n ** exponent
      exponent = exponent + 1
      print (res)
    

答案 2 :(得分:1)

exponent16开始; while循环只进行一次迭代。并且你在循环的每一步都重新分配n ...... 这会奏效:

for exp in range(17):
    print(2**exp)

答案 3 :(得分:0)

您应该检查exponent的初始化,因为您希望它从0到16,但是从头开始将其设置为16。

exponent = 0应该做的伎俩;)

另外,请注意,因为您每次都在循环中重新分配n。尝试仅打印结果,而不是将其存储在n中(或使用其他变量)。

希望这有帮助!