2017-02-19 48 views
0

所以我試圖輸入一個分區問題作爲參數,我總是得到0當答案是< 1.我知道這是爲什麼發生,但我不知道如何解決這個問題,它給出了一個小數的答案分區作爲輸入參數返回0

def division(x): print x 其中 「x」 爲1/2,代碼打印」 .5"

我使用JES版本5.020。任何指導將非常感謝!

+0

添加的邏輯'高清divison()' – Juggernaut

+0

我不知道是什麼意思。有沒有我可以閱讀的文章? –

回答

0

使用float()函數。

5/2 = 2
浮子(5)/浮子(2)= 2.5

+0

我無法得到這個與float()函數一起工作,因爲我認爲輸入已經被分割了。 –

+0

嘗試使用浮點數放入函數中 - 例如x = float(x)def division(x):print(x) – Phonzi

+0

基本上,在將數字放入函數之前,只需將數字轉換爲浮點數。 – Phonzi

0

首先,有在具有稱爲除法功能是沒有意義的,如果它是所有打印輸入。

現在到實際的問題。您使用的是Python 2.在Python 2中,整數除法總是一個整數。所以1/3(應該等於0.33)僅爲0.

解決方法是將至少一個數字轉換爲浮點數。這可以通過以下方式進行:

  1. float(1)/3
  2. 1.0/3

是的,在當前的設置,數量也傳遞給你的函數之前會發生這種劃分。所以你的功能完美運作,它是需要改變的輸入。

編輯:

如果你不能改變輸入和需要支持浮點整數的麪點師用未來模塊。這使一些Python 3個功能蟒蛇2.

此行添加到代碼的開頭:

from __future__ import division 
+0

我試圖做甚至可能嗎?在分割發生之前,輸入不能轉換爲浮點數。我希望用戶只是指定參數「1/2」,並讓函數知道它是.5而不是0. –

+0

這是可能的,但我不明白你爲什麼想要這樣做。預計數字輸入是數字,而不是數字的分數表示。至少這就是編程語言所假設的。如果您希望允許用戶輸入不受該語言支持的表示形式的數字,則應該以字符串形式輸入,然後根據需要處理輸入內容。但幸運的是,在你的情況下,一個小修改可以讓你得到你想要的結果。請看我編輯的答案。 – shish023

+0

是的,我試過'from __future__ import division',但它不會加載並給出無效的語法錯誤。我不確定該從哪裏出發。 –