自己就是个新手,写的也是非常“新手”的常识, 没有先后次序之分,想到哪,写到哪。有些简单的东西,整理一遍之后才发现,哇~原来这个还可以这样的......
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
更多内容请参阅 “十进制浮点型”
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com