本文实例讲解了Python中除法使用的注意事项,是非常重要的技巧,对于Python程序设计来说有很好的借鉴价值。具体分析如下:
现来看如下示例:
def avg(first, *rest): return (first + sum(rest)) / (1 + len(rest)) # Sample use avg(1, 2) # 1.5 avg(1, 2, 3, 4) # 2.5
源程序只是为了演示变长参数的使用,不过 Python 2.7.1 的解释器里,我得到的结果却和注释的结果不一样
> def avg(first, *rest): ... return (first + sum(rest)) / (1 + len(rest)) ... > avg(1, 2) 1 > avg(1, 2, 3, 4) 2
可以很明显的看到,小数点后的数据被截断了,我记得两个整数相除,"//" 应该才是取整,难道我记错了?
> def avg(first, *rest): ... return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' ... > avg(1, 2) 1 > avg(1, 2, 3, 4) 2
将 “/” 改成了“//”,得到的结果是一样的,“//”的确是取整这一点我是没记错,不过为什么“/”的结果也是截断了的?
同样的程序我在 3.4.1 的解释器里面做了测试,得到了预想的结果:
> def avg(first, *rest): ... return (first + sum(rest)) / (1 + len(rest)) ... > avg(1, 2) 1.5 > avg(1, 2, 3, 4) 2.5 > def avg(first, *rest): ... return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' ... > avg(1, 2) 1 > avg(1, 2, 3, 4) 2
可以看到在 3.4.1 的解释器里,“/”的结果保留了小数位,而“//”则是取整后的结果
搜索之后,找到了stackoverflow上的这个问题:Python里如何强制除法的结果为浮点数? 注意这个是针对 2.x 的版本,3.x 里面并不存在这样的问题
答案的前两个解决方案,都很不错:
方法1:
> from __future__ import division > a = 4 > b = 6 > c = a / b > c 0.66666666666666663
方法2:
类似于C语言里面的做法:
c = a / float(b)
相信本文所述实例会对大家的Python程序设计有一定的帮助。
Python,除法,注意事项
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。