国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中除法使用的注意事項

2019-11-25 18:16:48
字體:
來源:轉載
供稿:網友

本文實例講解了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 

可以很明顯的看到,小數點后的數據被截斷了,我記得兩個整數相除,"http://" 應該才是取整,難道我記錯了?

>>> 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程序設計有一定的幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛南县| 车致| 曲水县| 长海县| 长宁区| 大悟县| 平塘县| 盐亭县| 通道| 巴彦县| 枝江市| 曲沃县| 阜新| 哈巴河县| 栖霞市| 彭州市| 金门县| 新巴尔虎左旗| 山东省| 顺义区| 乌拉特前旗| 泗阳县| 安远县| 江孜县| 长春市| 晋江市| 北流市| 石家庄市| 大关县| 阿克陶县| 乡宁县| 墨竹工卡县| 白沙| 陕西省| 蚌埠市| 陈巴尔虎旗| 临猗县| 云霄县| 沙河市| 乾安县| 海门市|