极其基本的Python程序不会返回正确的值

时间:2017-10-04 16:31:33

标签: python-3.x

我正在编写一个非常简单的程序,用于计算物体在空中停留多长时间内因重力而下落的距离。

(main.py)

# Importing falling_distance function 
from a3_functions import falling_distance 

# Doc-string
import a3_functions; print(a3_functions.falling_distance.__doc__)

# Input from user and formatted output
t = input('Enter the time (in secs): ')
print("The Object has fallen {:.2f} in {:d} seconds".format(falling_distance(t), t))

^^是用户放入时间量的主要模块/类。之后它引用了程序a3_functions.py,它本质上是各种函数的库。

 (a3_functions.py)

 def falling_distance (t): 
"""-------------------------------------------------------------------------
 Purpose: Calculate and output falling distance (in metres) given time (in 
 seconds) 
 ---------------------------------------------------------------------------
 Preconditions: 
      t - time (int > 0)
      g - gravitational constant
 Postconditions:
      returns:
      d - distance (float > 0)
 ---------------------------------------------------------------------------
""" 

t = int(t)
g = 9.8 
d = (1/2)*g*t**2 
return d

我知道我可以在一个程序中非常简单地完成它但是当d被返回为0时,是否有人可以告诉我?

在我看来,我认为它与eclipse的设置方式有关,因为之前有效。我在其他程序上工作,回到这个程序,它破了。我觉得这是一个简单的问题,经常发生并且有一个简单的解决方法

1 个答案:

答案 0 :(得分:0)

您使用的是Python 2,而不是Python 3.它们通常都安装在同一台计算机上,在大多数系统上,默认值为2而不是3.如果您使用python3而不是{python显式启动它{1}},如果安装了Python 3,你应该能够获得它。

具体来说,在Python 2中,如果划分两个整数,它会将结果转换为整数,因此1/2给出0.这被改为在Python 3中进行浮点除法。

此外,Python 2中的input函数相当于Python 3中的eval(input(...)),因此t已经是int。在Python 3中,您的格式调用不起作用,因为您不能在字符串上使用{:d}