展开全部
首先1/200厘米,需要用浮点数运算,得出纸的厚度t。再分析一下,输入0折0次就是原始厚度t*1(2的0次方636f707962616964757a686964616f31333337623463乘以厚度),输入1就是2倍的原始厚度t*2(2的1次方乘以厚度),输入2是4倍原始厚度(2的2次方乘以厚度),输入3就是8倍原始厚度(2的3次方乘以厚度)……
可见,折纸次数n,最终那么厚度就是2^n次方乘以厚度。
这就是题目中为什么要求用迭代器。循环迭代器只会顺序读取,不会再头开始循环,用于处理大数据。iter(),那就需要用next()来取值。参考如下:t = float(1)/200 #计算原始厚度
print 'Thickness is :',t,'cm'
iterator = iter([2**i for i in range(31)]) #迭代器 从2的0次方到2的30次方
n = input('count:') #输入折纸次数
for i in range(31):
if i == n :
print 'final thickness of the paper is:',iterator.next()*t,'cm'
break
iterator.next() #循环列表range(31)和迭代器iterator,当值等于输入的折纸次数时,打印厚度,否则生成器取下一值,并再做判断