我在桌面上创建了一个小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
答案 0 :(得分:2)
由于365
和i
是整数,因此您正在执行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^-----------^
:
.row {
display: flex;
flex-basis: 1
flex-flow: row;
align-items: center;
border: 1px solid #666;
margin-bottom: 10px;
}
.left {
align-items: center;
justify-content: center;
font-size: 50px;
padding: 0 0 0 10px;
}
ul li {
color: #9e9e9e;
font-size:30px;
font-weight:lighter;
list-style: none;
}
答案 1 :(得分:1)
那么在你的第一次迭代中你的i = 1. 365-1 = 364. 364/365 = 0因为它是python中的整数除法。所以答案总是会给你0,除非你改变它以允许你给浮点数。
将365更改为365.0将为您提供答案
cols = ['YEAR','MONTH','DAY','Customer']
df = df.groupby(cols, as_index=False).max().reindex_axis(df.columns, axis=1)
print (df)
YEAR MONTH DAY A B C D E F Customer
0 2007 1 1 1 1 0 0 0 0 5000
1 2007 1 2 0 1 1 0 0 0 5000
我刚刚将365改为365.0而且我得到了
chance = chance * ((365-i)/365.0)
作为我的输出
答案 2 :(得分:0)
Python2.x中的结果是正确的。当a / b和a小于b时,结果为0.
将365修改为365.0,它会将除法结果转换为float
chance *= ((365-i)/365.0)