2017-06-21 81 views
0

我在桌面上創建了一個小型python文件以獲得樂趣,而且我很沮喪地發現沒有值被返回。下面是從文件中的代碼:終端不在Mac上打印python代碼

def calc(x): 
    chance =1 
    for i in range(1,x+1): 
     chance *= ((365-i)/365) 
    return chance * 100 

string = calc(23) 
print string 

,這裏是什麼我鍵入到終端:

cd Desktop #where file is located 
python py.py #py is the name of the file 

而這正是它返回:

0 
+1

這應該工作。確保你在shell中用'cat py.py'執行正確的文件?另外,「結束我?」這不是那麼可怕,是嗎? –

回答

1

好了等你第一次迭代你的i = 1. 365-1 = 364. 364/365 = 0,因爲它是python中的整數除法。所以答案總是會給你0,除非你改變它來允許你浮動。

更改365至365.0會給你答案

chance = chance * ((365-i)/365.0) 

我只是改變了365至365.0和我

2.23071139399e-05 

正如我的輸出

+0

哦,當然。謝謝,那就是問題所在。 –

+0

很高興我能幫到你 – Dorilds

2

由於365i是整數,你正在執行integer division,它只返回結果的「整個」部分。由於365-i小於365除以二將導致0,並且不斷乘以任何東西仍會給出0

您可以使用365.0符號使用浮點除法,這將最終產生的結果46.1655742085

chance = 1 
for i in range(1,x+1): 
    chance *= ((365.0 - i)/365.0) 
    # Floating point^-----------^ 
0

結果是Python2.x正確的。當A/B和a是小於b,結果爲0。

修改365至365.0將投除法結果漂浮

chance *= ((365-i)/365.0)