最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

跟老齊學(xué)Python之啰嗦的除法

 更新時間:2014年09月12日 15:20:17   投稿:hebedich  
python 除法運算 比較奇怪,和別的程序語言不大一樣。從Python2.2開始,除法運算符除了/之外,又引入了一個除法運算符://,后一種運算符只用于進行整除法。對于除法運算符/,默認時的行為跟Python2.2之前的一樣,它視操作數(shù)而定,既可以進行整除,也可以進行真除法。

除法啰嗦的,不僅是python。

整數(shù)除以整數(shù)

看官請在啟動idle之后,練習(xí)下面的運算:

>>> 2/5
0
>>> 2.0/5
0.4
>>> 2/5.0
0.4
>>> 2.0/5.0
0.4

看到?jīng)]有?麻煩出來了,如果從小學(xué)數(shù)學(xué)知識除法,以上四個運算結(jié)果都應(yīng)該是0.4。但我們看到的后三個符合,第一個居然結(jié)果是0。why?

因為,在python里面有一個規(guī)定,像2/5中的除法這樣,是要取整。2除以5,商是0(整數(shù)),余數(shù)是2(整數(shù))。那么如果用這種形式:2/5,計算結(jié)果就是商那個整數(shù)?;蛘呖梢岳斫鉃椋赫麛?shù)除以整數(shù),結(jié)果是整數(shù)(商)。

繼續(xù)實驗,驗證這個結(jié)論:

>>> 5/2
2
>>> 6/3
2
>>> 5/2
2
>>> 6/2
3
>>> 7/2
3
>>> 8/2
4
>>> 9/2
4

注意:這里是得到整數(shù)商,而不是得到含有小數(shù)位的結(jié)果后“四舍五入”。例如5/2,得到的是商2,余數(shù)1,最終5/2=2。并不是對2.5進行四舍五入。

浮點數(shù)與整數(shù)相除

列為看官注意,這個標題和上面的標題格式不一樣,上面的標題是“整數(shù)除以整數(shù)”,如果按照風(fēng)格一貫制的要求,本節(jié)標題應(yīng)該是“浮點數(shù)除以整數(shù)”,但沒有,現(xiàn)在是“浮點數(shù)與整數(shù)相除”,這是因為包含了以下三種情況:

被除數(shù)是浮點數(shù),除數(shù)是整數(shù)
被除數(shù)是整數(shù),除數(shù)是浮點數(shù)
被除數(shù)和除數(shù)都是浮點數(shù)
出結(jié)論之前,還是先做實驗:

>>> 9.0/2
4.5
>>> 9/2.0
4.5
>>> 9.0/2.0
4.5
>>> 8.0/2
4.0
>>> 8/2.0
4.0
>>> 8.0/2.0
4.0

歸納,得到規(guī)律:不管是被除數(shù)還是除數(shù),只要有一個數(shù)是浮點數(shù),結(jié)果就是浮點數(shù)。所以,如果相除的結(jié)果有余數(shù),也不會像前面一樣了,而是要返回一個浮點數(shù),這就跟在數(shù)學(xué)上學(xué)習(xí)的結(jié)果一樣了。

>>> 10.0/3
3.3333333333333335


這個是不是就有點搞怪了,按照數(shù)學(xué)知識,應(yīng)該是3.33333...,后面是3的循環(huán)了。那么你的計算機就停不下來了,滿屏都是3。為了避免這個,python武斷終結(jié)了循環(huán),但是,可悲的是沒有按照“四舍五入”的原則終止。

關(guān)于無限循環(huán)小數(shù)問題,小學(xué)都學(xué)習(xí)了,但是這可不是一個簡單問題,看看維基百科的詞條:0.999...,會不會有深入體會呢?

總之,要用python,就得遵循她的規(guī)定,前面兩條規(guī)定已經(jīng)明確了。

補充一個資料,供有興趣的朋友閱讀:浮點數(shù)算法:爭議和限制
說明:以上除法規(guī)則,是針對python2,在python3中,將5/2和5.0/2等同起來了。不過,如果要得到那個整數(shù)部分的上,可以用另外一種方式:地板除.

>>> 9/2
4
>>> 9//2
4

python總會要提供多種解決問題的方案的,這是她的風(fēng)格。

開始用輪子

python之所以受人歡迎,一個很重重要的原因,就是輪子多。這是比喻啦。就好比你要跑的快,怎么辦?光天天練習(xí)跑步是不行滴,要用輪子。找輛自行車,就快了很多。還嫌不夠快,再換電瓶車,再換汽車,再換高鐵...反正你可以選擇的很多。但是,這些讓你跑的快的東西,多數(shù)不是你自己造的,是別人造好了,你來用。甚至兩條腿也是感謝父母恩賜。正是因為輪子多,可以選擇的多,就可以以各種不同速度享受了。

python就是這樣,有各種各樣別人造好的輪子,我們只需要用。只不過那些輪子在python里面的名字不叫自行車、汽車,叫做“模塊”,有人承接別的語言的名稱,叫做“類庫”、“類”。不管叫什么名字把。就是別人造好的東西我們拿過來使用。

怎么用?可以通過兩種形式用:

形式1:import module-name。import后面跟空格,然后是模塊名稱,例如:import os
形式2:from module1 import module11。module1是一個大模塊,里面還有子模塊module11,只想用module11,就這么寫了。比如下面的例子:
不啰嗦了,實驗一個:

>>> from __future__ import division
>>> 5/2
2.5
>>> 9/2
4.5
>>> 9.0/2
4.5
>>> 9/2.0
4.5

注意了,引用了一個模塊之后,再做除法,就不管什么情況,都是得到浮點數(shù)的結(jié)果了。

這就是輪子的力量。

關(guān)于余數(shù)

前面計算5/2的時候,商是2,余數(shù)是1

余數(shù)怎么得到?

實驗下面的操作:

>>> 5%2
1
>>> 9%2
1
>>> 7%3
1
>>> 6%4
2
>>> 5.0%2
1.0

符號:%,就是要得到兩個數(shù)(可以是整數(shù),也可以是浮點數(shù))相除的余數(shù)。

前面說python有很多人見人愛的輪子(模塊),她還有豐富的內(nèi)建函數(shù),也會幫我們做不少事情。例如函數(shù)divmod()

>>> divmod(5,2) #表示5除以2,返回了商和余數(shù)
(2, 1)
>>> divmod(9,2)
(4, 1)
>>> divmod(5.0,2)
(2.0, 1.0)

四舍五入

最后一個了,一定要堅持,今天的確有點啰嗦了。要實現(xiàn)四舍五入,很簡單,就是內(nèi)建函數(shù):round()

動手試試:

>>> round(1.234567,2)
1.23
>>> round(1.234567,3)
1.235
>>> round(10.0/3,4)
3.3333

簡單吧。越簡單的時候,越要小心,當你遇到下面的情況,就有點懷疑了:

>>> round(1.2345,3)
1.234        #應(yīng)該是:1.235
>>> round(2.235,2)
2.23        #應(yīng)該是:2.24

哈哈,我發(fā)現(xiàn)了python的一個bug,太激動了。

別那么激動,如果真的是bug,這么明顯,是輪不到我的。為什么?具體解釋看這里,下面摘錄官方文檔中的一段話:

Note:
The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This is not a bug: it's a result of the fact that most decimal fractions can't be represented exactly as a float. See Floating Point Arithmetic: Issues and Limitations for more information.

原來真的輪不到我。(垂頭喪氣狀。)

似乎除法的問題到此要結(jié)束了,其實遠遠沒有,不過,做為初學(xué)者,至此即可。還留下了很多話題,比如如何處理循環(huán)小數(shù)問題,我肯定不會讓有探索精神的朋友失望的,在我的github中有這樣一個輪子,如果要深入研究,可以來這里嘗試。

相關(guān)文章

  • Python+tkinter實現(xiàn)一個繪圖風(fēng)格控件

    Python+tkinter實現(xiàn)一個繪圖風(fēng)格控件

    這篇文章主要為大家詳細介紹了Python如何利用tkinter實現(xiàn)一個簡單的繪圖風(fēng)格控件,文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-09-09
  • python?包實現(xiàn)?urllib?網(wǎng)絡(luò)請求操作

    python?包實現(xiàn)?urllib?網(wǎng)絡(luò)請求操作

    這篇文章主要介紹了python包實現(xiàn)urllib網(wǎng)絡(luò)請求操作,urllib?是?Python?標準庫中用于網(wǎng)絡(luò)請求的庫,下面urllib的相關(guān)資料介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 如何在Python中進行異常處理

    如何在Python中進行異常處理

    這篇文章主要介紹了如何在Python中進行異常處理,Python中使用用異常對象(exception object)表示異常情況,當程序運行遇到錯誤后,就會觸發(fā)發(fā)異常,下文關(guān)于異常處理的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • 基于CUDA out of memory的一種神奇解決方式

    基于CUDA out of memory的一種神奇解決方式

    這篇文章主要介紹了基于CUDA out of memory的一種神奇解決方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python使用XlsxWriter庫操作Excel詳解

    Python使用XlsxWriter庫操作Excel詳解

    XlsxWriter 是一個功能強大的 Python 模塊,專門用于生成 Microsoft Excel 2007及以上版本的電子表格文件,本文主要為大家介紹了如何使用XlsxWriter庫進行Excel基本操作,需要的可以參考下
    2023-11-11
  • python有證書的加密解密實現(xiàn)方法

    python有證書的加密解密實現(xiàn)方法

    這篇文章主要介紹了python有證書的加密解密實現(xiàn)方法,采用了M2Crypto組件進行相關(guān)的加密解密操作,包含了詳細的完整實現(xiàn)過程,需要的朋友可以參考下
    2014-11-11
  • 深入理解numpy廣播機制

    深入理解numpy廣播機制

    廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式,本文深入理解numpy廣播機制,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • python中l(wèi)ist方法詳解

    python中l(wèi)ist方法詳解

    list 是 Python 中的一種內(nèi)置數(shù)據(jù)類型,代表一個可變的有序序列。list 類型的對象可以使用多個方法來操作和修改其中的元素。文中通過代碼示例詳細介紹了list的常用方法,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • 深入探究PyTorch核心特性之自動求導(dǎo)和優(yōu)化

    深入探究PyTorch核心特性之自動求導(dǎo)和優(yōu)化

    在你已經(jīng)掌握了如何使用PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,接下來我們將深入探討PyTorch的兩個核心特性:自動求導(dǎo)(Autograd)和優(yōu)化(Optimization),這兩個特性在深度學(xué)習(xí)模型的訓(xùn)練過程中起著至關(guān)重要的作用,感興趣的同學(xué)一起來看看吧
    2023-07-07
  • Python pyecharts繪制柱狀圖

    Python pyecharts繪制柱狀圖

    這篇文章主要介紹了Python pyecharts繪制柱狀圖,文章介紹的柱狀/條形圖,通過柱形的高度/條形的寬度來表現(xiàn)數(shù)據(jù)的大小,感興趣的小伙伴一起進入文章學(xué)習(xí)更詳細內(nèi)容吧
    2021-12-12

最新評論

二连浩特市| 西盟| 田东县| 邳州市| 江阴市| 大城县| 湖口县| 郯城县| 昭苏县| 蕉岭县| 诸暨市| 大同县| 湄潭县| 神池县| 巧家县| 城市| 灵山县| 广宗县| 中超| 浦城县| 奎屯市| 平遥县| 阿拉善右旗| 普格县| 府谷县| 成安县| 正蓝旗| 垣曲县| 浦江县| 温州市| 通山县| 鸡西市| 拜泉县| 科技| 同仁县| 兰坪| 米脂县| 会泽县| 和政县| 大化| 宁明县|