Python中除法使用的注意事項
本文實例講解了Python中除法使用的注意事項,是非常重要的技巧,對于Python程序設計來說有很好的借鑒價值。具體分析如下:
現(xiàn)來看如下示例:
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
源程序只是為了演示變長參數(shù)的使用,不過 Python 2.7.1 的解釋器里,我得到的結(jié)果卻和注釋的結(jié)果不一樣
>>> def avg(first, *rest): ... return (first + sum(rest)) / (1 + len(rest)) ... >>> avg(1, 2) 1 >>> avg(1, 2, 3, 4) 2
可以很明顯的看到,小數(shù)點后的數(shù)據(jù)被截斷了,我記得兩個整數(shù)相除,"http://" 應該才是取整,難道我記錯了?
>>> def avg(first, *rest): ... return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' ... >>> avg(1, 2) 1 >>> avg(1, 2, 3, 4) 2
將 “/” 改成了“//”,得到的結(jié)果是一樣的,“//”的確是取整這一點我是沒記錯,不過為什么“/”的結(jié)果也是截斷了的?
同樣的程序我在 3.4.1 的解釋器里面做了測試,得到了預想的結(jié)果:
>>> 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 的解釋器里,“/”的結(jié)果保留了小數(shù)位,而“//”則是取整后的結(jié)果
搜索之后,找到了stackoverflow上的這個問題:Python里如何強制除法的結(jié)果為浮點數(shù)? 注意這個是針對 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第三方庫face_recognition在windows上的安裝過程
今天為大家介紹下face recognition在Windows系統(tǒng)上安裝與使用,但在Windows平臺上face recognition性能會有所下降2019-05-05Python腳本簡單實現(xiàn)打開默認瀏覽器登錄人人和打開QQ的方法
這篇文章主要介紹了Python腳本簡單實現(xiàn)打開默認瀏覽器登錄人人和打開QQ的方法,涉及Python針對瀏覽器及應用程序的相關操作技巧,代碼非常簡單實用,需要的朋友可以參考下2016-04-04