自己就是个新手,写的也是非常“新手”的常识, 没有先后次序之分,想到哪,写到哪。有些简单的东西,整理一遍之后才发现,哇~原来这个还可以这样的......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 类:
>>>fromdecimalimportDecimal
>>>dec=Decimal('.1')
>>>dec
Decimal('0.1')
>>>printdec
0.1
更多内容请参阅 “十进制浮点型”