写给Python初学者的心得体会总结,【090819】更新中......

Posted on 2009-08-17 22:06  fouri  阅读(1246)  评论(3编辑  收藏  举报

 

自己就是个新手,写的也是非常“新手”的常识, 没有先后次序之分,想到哪,写到哪。有些简单的东西,整理一遍之后才发现,哇~原来这个还可以这样的......

  • while 的用法:

while 后面跟条件表达式,(:)后面跟语句块,你可以在这段语句块里修改条件表达式的某些变量,当条件表达式 为假的时候退出循环。例如:

flag = 5
while flag > 0:
    #这里是你的代码
    flag -= 1
    #if flag == 3: break
    #if flag == 3: continue
    print flag

当然你也可以在适当的时候用 break 直接跳出循环。
执行 continue 语句表示 忽略该循环 continue 以后的代码,直接进行下一次迭代(循环),即跳到 条件表达式 处。
注意一点,如果一开始 条件表达式 为假,那么while 里的代码一次都不会执行。
条件表达式 也可以是一个值 ,如 True ,这时候一般需要 break 语句配合循环的退出。

  • 一个循环的简单例子
from random import randint
from time import sleep,ctime
'''随机得到100个数(字符串表示),然后间隔2秒循环3次,每次输出其中一段数字'''
aList = ''
for i in range(100): #得到100个随机数的字符串表示
    aList += str(randint(0,9))
reFlag = 5 #循环 5 次
while reFlag > 0:
    getNum = int(aList[randint(0,49):randint(50,99)]) #得到随机N个数字
    sleep(2)  
    print getNum
    reFlag -= 1
  • 问题:用Python求一组数的平均值,为什么最后只能显示整数部分呢,可以显示小数部分吗?
    def Average(list):
        r=0
        for i in list:
            r+=i
        result=r/len(list)

解:
代码中的除法为“地板除”,即它只取商的整数部分,不是真正的除法。
可以这样修改 result=float(r)/len(list),进行数字的显示转换。
也可以这样修改 result=1.0*r/len(list),   让解释器进行默认的类型转换(向(1.0)的类型进行转换),至于转换的优先级,正确的转换方向应该是,整数向长整数转换,长整数向浮点数转换,非复数向复数转换。

  •  问题: >>>0.1  为何输出为 0.1000000000000001
在C语言中,双精度的实现遵守IEEE 754规范,其中52位用于底。精度只有52位,那些超出位数的二进制表示会被截断。0.1 还是 0.1.

而在Python中,0.1的二进制表示是 0.11001100110011..*2(-3)(-3为指数)
与它最接近的二进制近似值是 0.0001100110011...,或表示为 1/16+1/32+1/256+... ,看到不了吧,这里边有个循环的问题,他在不停的重复舍入直到出错。

你可以导入 decimal 模块 的 Decimal 类:
>>>from decimal import Decimal
>>>dec = Decimal('.1')
>>>dec
Decimal(
'0.1')
>>>print dec
0.1
更多内容请参阅 “十进制浮点型”