Python数学除法运算返回0

2024-09-24 02:16:09 发布

您现在位置:Python中文网/ 问答频道 /正文

print "------------ EPIDEMIOLOGY --------------\n"

def divide(A,B):
    return A/B

print " [Population] point Prevalence rate: "
A = input("Enter value for people with disease: " )
B = input("Enter value for total population: " )    
prevalence = divide(A,B)
print " Population Prevalence rate is: ",prevalence

A和B是用户输入,不知道它们是整数还是浮点。当我运行这个程序时,我的答案总是0。(我是Python新手)。如何解决这个问题或改变我的功能来避免这个问题?在

代码的输入部分起作用,数学不起作用。在


Tags: forinputreturnratevaluedefpeoplepoint
2条回答

您得到的答案是0,因为您使用Python2并执行整数除法。患病人口不能高于总人口这一事实是,每一个合理的输入都会得到零(除非两个值相同)。在

两个修复:

def divide(a,b):
    if b == 0:
        # decide for yourself what should happen here
    else:
        return float(a)/b

这将确保函数执行浮点除法,而不管传递给它什么数字。第二个修复方法是在Python2中使用raw_input,并将输入转换为一个数字(float在这里可以)。在

^{pr2}$

input()的问题是它等价于eval(raw_input())。在

在python2.x中执行整数除法。如果被除数小于除数,则运算返回零。
所以你有两个选择:

将其中一个操作数设为浮点:

def divide(A,B):
    return float(A)/B

从Python 3导入功能

^{pr2}$

相关问题 更多 >