我正在学习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__
,是最后一行吗?我不知道它做了什么,但我就是它并且它有效。
答案 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()