Python中除法使用的注意事項(xiàng)
本文實(shí)例講解了Python中除法使用的注意事項(xiàng),是非常重要的技巧,對(duì)于Python程序設(shè)計(jì)來(lái)說(shuō)有很好的借鑒價(jià)值。具體分析如下:
現(xiàn)來(lái)看如下示例:
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
源程序只是為了演示變長(zhǎng)參數(shù)的使用,不過(guò) 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ù)點(diǎn)后的數(shù)據(jù)被截?cái)嗔耍矣浀脙蓚€(gè)整數(shù)相除,"http://" 應(yīng)該才是取整,難道我記錯(cuò)了?
>>> def avg(first, *rest): ... return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' ... >>> avg(1, 2) 1 >>> avg(1, 2, 3, 4) 2
將 “/” 改成了“//”,得到的結(jié)果是一樣的,“//”的確是取整這一點(diǎn)我是沒(méi)記錯(cuò),不過(guò)為什么“/”的結(jié)果也是截?cái)嗔说模?/p>
同樣的程序我在 3.4.1 的解釋器里面做了測(cè)試,得到了預(yù)想的結(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上的這個(gè)問(wèn)題:Python里如何強(qiáng)制除法的結(jié)果為浮點(diǎn)數(shù)? 注意這個(gè)是針對(duì) 2.x 的版本,3.x 里面并不存在這樣的問(wèn)題
答案的前兩個(gè)解決方案,都很不錯(cuò):
方法1:
>>> from __future__ import division >>> a = 4 >>> b = 6 >>> c = a / b >>> c 0.66666666666666663
方法2:
類似于C語(yǔ)言里面的做法:
c = a / float(b)
相信本文所述實(shí)例會(huì)對(duì)大家的Python程序設(shè)計(jì)有一定的幫助。
相關(guān)文章
Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(1)
這篇文章主要為大家詳細(xì)介紹了Python的隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim())
這篇文章主要介紹了matplotlib之pyplot模塊坐標(biāo)軸范圍設(shè)置(autoscale(),xlim(),ylim()),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python監(jiān)控進(jìn)程狀態(tài),記錄重啟時(shí)間及進(jìn)程號(hào)的實(shí)例
今天小編就為大家分享一篇python監(jiān)控進(jìn)程狀態(tài),記錄重啟時(shí)間及進(jìn)程號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別
下面小編就為大家分享一篇詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python設(shè)計(jì)模式結(jié)構(gòu)型代理模式
這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型代理模式,代理模式即Proxy?Pattern,為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn),下文內(nèi)容詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-02-02
基于python編寫(xiě)的五個(gè)拿來(lái)就能用的炫酷表白代碼分享
七夕快到了,所以本文小編將給給大家介紹五種拿來(lái)就能用的炫酷表白代碼,無(wú)限彈窗表白,愛(ài)心發(fā)射,心動(dòng)表白,玫瑰花等表白代碼,需要的小伙伴快來(lái)試試吧2023-08-08
python如何終止死循環(huán)和開(kāi)啟死循環(huán)
這篇文章主要介紹了python如何終止死循環(huán)和開(kāi)啟死循環(huán)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Python無(wú)法用requests獲取網(wǎng)頁(yè)源碼的解決方法
爬蟲(chóng)獲取信息,很多時(shí)候是需要從網(wǎng)頁(yè)源碼中獲取鏈接信息的,下面這篇文章主要給大家介紹了關(guān)于Python無(wú)法用requests獲取網(wǎng)頁(yè)源碼的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07

