Python新手和寫一個簡單的代碼將華氏轉換成Celcius。在Python中的數學運算
有人能告訴我爲什麼這兩行代碼給出不同的結果嗎?
cConvert = (number - 32)/(9/5)
cConvert = (number - 32)/1.8
9/5 = 1.8但是我該如何編寫代碼而不必自己計算9/5?
感謝
Python新手和寫一個簡單的代碼將華氏轉換成Celcius。在Python中的數學運算
有人能告訴我爲什麼這兩行代碼給出不同的結果嗎?
cConvert = (number - 32)/(9/5)
cConvert = (number - 32)/1.8
9/5 = 1.8但是我該如何編寫代碼而不必自己計算9/5?
感謝
如果您使用的是Python 2,整數除法會生成一個整數結果,所以您需要將一個或兩個操作數轉換爲float
以獲得所需的結果。在Python 3中,整數除法產生一個float
結果(即使結果是一個確切的整數),所以在Python 3中,不需要顯式轉換爲float。
嘗試以下操作:
cConvert = (number - 32)/(float(9)/5)
或者:
cConvert = (number - 32)/(9.0/5)
這應該給你你期待的結果,在這兩個的Python 2和Python 3
您需要更改9或5成float
喜歡9.0/5或9/5.0,或兩者兼而有之。如果不是,9/5
將返回結果的整數部分,1
在Python 2,這是一個int結果:
>>> 9/5
1
但是,這是一個浮動的結果:
>>> 9/5.0
1.8
作爲是這樣的:
>>> 9.0/5
1.8
所以在方程中添加.0
到opperands之一,使日操作發生爲浮動。
假設這是Python 2中,您可以通過顯式使用float
文字9./5
或9/5.
或9./5.
解決這一問題(你可以在.
後添加0
,如果你喜歡,但它沒有必要在尾點本身使得float
文字),或者你可以移動到Py3語義。
from __future__ import division
到源文件to get Py3 division rules的頂部:你的代碼,如果你添加作品完全一樣寫入。如果你想分區劃分,你可以使用9 // 5
,否則,使用Py3分區時,int/int
總是導致float
。
課程你使用Python2.x
。
相關問題:
How can I force division to be floating point in Python
Python integer division yields float
在Python3
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 9/5
1.8
>>> 9//5
1
這是因爲'9/5'結果在一個int。所以你可以通過使任何一個值浮動來改變返回類型 –