2016-07-27 29 views
0

我只是在計算時間/速度/距離的個人項目。 雖然我遇到了我的程序問題,但是當我輸入36來表示公里的時速和100公里/小時的速度時,程序應該給我回21.6分鐘的結果,但是它會給我0分鐘。程序僅在使用小數時才起作用?

但是,當我輸入36.0和100時,該程序完全符合我的要求。 爲什麼當我輸入一個十進制數來覆蓋它的工作正常,但是當輸入一個整數時它將不能正確計算。

有興趣看看問題可能是什麼,它是我的代碼的順序?也許,使變量浮動或一些這樣的事情可能是修復?不知道是什麼問題,因爲它發生在一個特定的事情上,例如確保數字是小數。 仍然可以從我的代碼中知道Python。

在此先感謝您的幫助。

代碼如下;

print('Welcome to my calculator') 

d = float(input('How many kms do you want to cover? ')) 
s = float(input('How fast will you be travelling (km/h)? ')) 
t = d/s 
    if t < 1: 
    t = t * 60 
    print('You will reach your destination in ') + str(t) + (' minutes.') 
    else: 
    print('You will reach your destination in ') + str(t) + (' hours.') 
+0

非常感謝您的解釋和幫助,對重複問題表示歉意,我想我不知道要搜索什麼! – Muzzy

回答

0

我猜你的問題是整數除法。您可以通過將t = d/s更改爲t = float(d)/s來解決此問題。

>>> 2/5 
0 
>>> float(2)/5 
0.4 

此問題已得到解決在Python 3

+1

這不是一個「問題」要解決。 – khajvah

0

您正在整數除法。嘗試將ds轉換爲浮點數。

t = float(d)/s 

而這將返回預期的輸出。你也可以這樣做:

t = (d * 1.0)/s 

避免TypeError如果d是,例如,一個複數。


默認情況下,在Python2,當你使用整數/兩者之間,它執行一個整數除法。如果兩個數字中的一個是float,則它執行十進制除法。

另請注意,建議您將用戶輸入置於try/except區塊中。

相關問題