终端未在Mac上打印python代码

终端未在Mac上打印python代码,python,macos,Python,Macos,为了好玩,我在我的桌面上制作了一个小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 pyth

为了好玩,我在我的桌面上制作了一个小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

在第一次迭代中,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

作为我的输出

那么,在第一次迭代中,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

作为我的输出

,因为
365
i
是整数,所以您正在执行,它只返回结果的“全部”部分。由于
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^-----------^

由于
365
i
是整数,因此您正在执行,这只返回结果的“全部”部分。由于
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^-----------^

Python2.x中的结果是正确的。当a/b和a小于b时,结果为0

将365修改为365.0它会将除法结果转换为浮点

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

Python2.x中的结果是正确的。当a/b和a小于b时,结果为0

将365修改为365.0它会将除法结果转换为浮点

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

这应该行得通。确保在shell中使用
cat py.py
执行正确的文件?还有,“结束我?”没那么可怕吧?这应该行得通。确保在shell中使用
cat py.py
执行正确的文件?还有,“结束我?”没那么可怕吧?哦,当然。谢谢,这就是问题所在。很高兴我能帮上忙。谢谢,这就是问题所在。很高兴我能帮上忙