Python学习笔记之while循环

来源:互联网 发布:星际争霸2 剧情知乎 编辑:程序博客网 时间:2024/06/07 09:56

Python学习笔记之while循环

在学习过程中老师布置了一道比较有意思的练习题,题目是根据米国的法律男士每离一次婚那么财产将分割一半给妻子,米国天才比尔的财产是700亿米元,那么他离婚多少次会变成穷光蛋。

用Python来计算一下:

bill = 700000000000 #比尔的财产count = 0  #计数器    while bill >0:        bill = bill/2        count = count+1        print(count,bill)print(count)    


结果是1114次,这个结果显然不太合理。那么来分析一下问题,从代码的计算过程中发现从45行开始数值就小于0.01了,后面的计算结果是无意义的。

来解决问题,首先来定义一个函数,将科学计数法转换为浮点数:

def as_num(x):      y='{:.5f}'.format(x) # 5f表示保留5位小数点的float型    return(y)  


其次是财产小于0.02米元之后就无法继续分割了,所以后续就没有必要计算下去了,来修改代码:

bill = 700000000000  #比尔的财产count = 0  #计数器def as_num(x):        y='{:.5f}'.format(x) # 5f表示保留5位小数点的float型        return(y)    while bill >0.02:        bill = bill/2        count = count+1        print(count,as_num(bill))print(count)   

通过计算发现,比尔在他第45次离婚分给妻子0.19米分后,就身无分文了XDDDDDDD