Python Simple Math出现了0.0

时间:2014-05-02 13:50:59

标签: python math

我正在学习Python,并且在进行简单的数学运算时遇到了问题......

def main():
    coneHeight = 4.5
    coneR = 1.5
    pi = 3.141

    cone = pi * (1/3) * coneHeight * (coneR * coneR)
    print cone

if  __name__ == '__main__':
    main()

如果有人能告诉我我做错了什么,那就太好了。另外,如果需要__name__,是最后一行吗?我不知道它做了什么,但我就是它并且它有效。

2 个答案:

答案 0 :(得分:2)

问题在于您正在(1/3)进行评估0。这是因为python的整数除法(实际上大多数编程语言的整数除法)将截断或向下舍入。这样做:

def main():
        coneHeight = 4.5
        coneR = 1.5
        pi = 3.141

        cone = pi * (1.0/3) * coneHeight * (coneR * coneR)
        print cone

if  __name__ =='__main__':main()

或者你可以这样做:

from __future__ import division
def main():
    coneHeight = 4.5
    coneR = 1.5
    pi = 3.141

    cone = pi * (1/3) * coneHeight * (coneR * coneR)  #no need to do 1.0/3 anymore
    print cone

if  __name__ =='__main__':main()

至于你的第二个问题,

当脚本直接运行时(从shell,cmd,bash等),__name__变量被赋值'__main__'。因此,只有在直接运行此.py文件时才会运行您的脚本,如果由另一个文件导入,则不会调用main()

答案 1 :(得分:1)

由于你是python的新手,如果你以后想要使用它,请先阅读(稍等一下):http://legacy.python.org/dev/peps/pep-0008/

关于你的问题,这是一个解决方案(很多):

# https://docs.python.org/2/library/math.html
# no need to declare "pi", just use the tools already created
import math

def main():
  cone_height = 4.5
  cone_r = 1.5
  one_third = float(1) / 3

  cone = math.pi * one_third * cone_height * math.pow(cone_r, 2)
  print cone

if  __name__ == '__main__':
  main()