欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中除法使用的注意事項

 更新時間:2014年08月21日 11:15:06   投稿:shichen2014  
這篇文章主要介紹了Python中除法使用的注意事項,是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程序設計有一定的幫助。

相關文章

最新評論