python 范围函数中的 ValueError(打印 3^(2^n))

ValueError in range function (to print 3^(2^n)) in python

在尝试打印 power(3,2^n) 的序列时,即 3^2,3^4,3^8 ,我尝试使用以下行使用范围 function.Is 可能使用范围函数来获得所需的输出?如果是这样,请告诉我哪里出错了。

for i in range(3,1000, i*(i-1)): print (i*i)

例如,对于 i=3,9,81

,预期会出现以下输出
i*i:=9,81,6561

但错误是:

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    for i in range(3,1000, i*(i-1)): print (i*i)
ValueError: range() arg 3 must not be zero

这种情况下步长值怎么会是0呢?

i = 2
while 3**i < 1000:
    print(3**i)
    i *= 2

我很确定你想做的与 this question 非常相似。您想调用列表理解:

powersofthree = [3**(2**i) for i in range(10)]

哪个returns

[3, 9, 81, ... ]

然后您可以随意打印结果。

此外,正如评论中的许多人指出的那样,您在定义之前使用了 i,这就是您遇到错误的原因

您可以使用列表理解来构建您所有能力的列表:

mylist = [3**(2**n) for n in range(1,10)]  # or whatever range

然后遍历理解以打印所有结果(如果需要)。你可以在这个循环中用你的结果做其他事情而不是打印它们。

for item in mylist:
  print(item)  # print each item on a new line