我需要为下一个数字指定一个值。代码如下所示:
def numerujPoziomy():
for i in range(0, liczbaPoziomow, 1):
var = i + 1
rootValue = 1
y = rootValue
print 'Level', var, 'value', y
每个下一个级别必须比之前的级别小一半。 Root的值为1,下一级的值为0.5,下一级的值为o.25等。我不知道该怎么做。
我的代码结果:
Level 1 value 1
Level 2 value 1
Level 3 value 1
Level 4 value 1
Level 5 value 1
Level 6 value 1
但我需要那个结果:
Level 1 value 1
Level 2 value 0.5
Level 3 value 0.25
Level 4 value 0.125
Level 5 value 0.0625
Level 6 value 0.03125
答案 0 :(得分:1)
你可以将1/2增加到第i个力量。
liczbaPoziomow = 5
def numerujPoziomy():
for i in range(0, liczbaPoziomow):
print 'Level', i + 1, 'value', 0.5 ** i
numerujPoziomy()
>>> Level 1 value 1.0
>>> Level 2 value 0.5
>>> Level 3 value 0.25
>>> Level 4 value 0.125
>>> Level 5 value 0.0625
答案 1 :(得分:1)
您使用2**i
的反转:
def numerujPoziomy():
for i in range(0, liczbaPoziomow, 1):
print 'Level', i+1, 'value', 1./2**i
请注意,在python 2.x中,非常重要的是你有1./2**i
而不是1/2**i
,因为后者只返回一个整数,而不是一个浮点数像你要的那样。在Python 3中避免了这个问题,或者在文件开头使用from __future__ import division
。
答案 2 :(得分:-2)
这样做很简单:
def numerujPoziomy():
rootValue = 1.0
for i in range(0, liczbaPoziomow, 1):
var = i + 1
y = rootValue / 2
rootValue = y
print 'Level', var, 'value', y