2017-10-04 18 views
0

私は、空中にどれくらいの長さでオブジェクトがどれくらい重力で落ちたかを計算する非常に簡単なプログラムを書いています。非常に基本的なPythonプログラムが適切な値を返さない

(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 

私は1つのプログラムで非常に簡単に行うことができますが、誰かがdが0として返されたときに誰にでも教えてくれますか?

私の意見では、それは以前のように働いていたので、日食が設定されている方法と関係があると思います。私は他のプログラムに取り組み、これに戻ってきて、それが壊れました。

+0

Python 3を使用していますか? Pythonシェルに 'import sys'と' sys.version'と入力するとどうなりますか? –

+0

python 3.6 – Dan

+0

を使っていると明らかに(1/2)を0.5に変更すると問題が解決しました.... – Dan

答えて

0

Python 3ではなくPython 2を使用しています。これらは多くの場合、同じコンピュータにインストールされ、ほとんどのシステムでデフォルトは2ですあなたが明示的にpythonの代わりにpython3でそれを明示的に起動すると、Python 3がインストールされていればそれを得ることができます。

すなわち、inputあなたは2つの整数を分割する場合、Pythonの2に、それは整数に結果を変換するので、1/2これは3

さらにPythonで浮動小数点除算を行うように変更した0与えます関数はPython 3ではeval(input(...))と同等なので、tはすでにintです。 Python 3では、文字列に{:d}を使用できないため、書式呼び出しが機能しません。

+0

どうすればPy 2を取り除くことができますか?コンソール上でsys.versionを実行して明示的に3.6を示しましたが、プロジェクト用にEclipseを使用します – Dan

+0

nevermind、Python 2インタプリタを削除して3.6 – Dan

関連する問題