2017-01-04 3 views
0

私はコーディングが新しく、浮動小数点の使い方はわかりません。これまで私は 'フロート'オブジェクトを呼び出し続けます。

TypeError, 'float' object is not callable. 

私のコード:

def problem1_7(): 
    b1 = input("Enter the length of one of your bases: ") 
    b2 = input("Enter the length of one of your bases: ") 
    h = input("Enter the height: ") 

    area = (1/2)(b1+b2)*h 

    print("The area of a trapezoid with bases",b1,"and",b2,"and height  ",h,"is",area) 
+1

「(1/2)(b1 + b2)* h」は何の操作をしていますか? –

+1

真剣に? CSSはどこにありますか? –

+0

また、 'b1'、' b2'、 'h'はすべて文字列になります。フロートとして扱う前に、それらを 'float()'でラップする必要があります。 –

答えて

2

問題はarea = (1/2)(b1+b2)*hである誰かがどこで受信しないようにコードのこの部分で山車を使用する方法をお知らせくださいでした。

Pythonの構文は数学的な構文とは異なりますが、()はメソッド呼び出しにパラメータを渡すために使用されます。しかし、(1/2)はfloatを返します。したがって、解釈されるのは、(1/2)のパラメータとしてb1 + b2の結果を持つ呼び出しです。

*を式に挿入するだけで、メソッドの呼び出しを乗算(float型に対して定義されている)に変更するだけです。

したがって、固定線はarea = (1/2)*(b1+b2)*hとなります。

もう1つの問題は、固定した後、これはすべての変数の実際のタイプ、つまりb1,b2およびhが文字列であることに気づくでしょう。あなたがフロートとしてそれらを解析する必要があることを修正するには:

b1 = float(input("Enter the length of one of your bases: ")) 
b2 = float(input("Enter the length of one of your bases: ")) 
h = float(input("Enter the height: ")) 

Pythonは、したがって、問題duck typing使用するもののような、多くの場合、実行時に表面化。

+0

ありがとう、私も浮動小数点数で変数をラップする必要があることを認識し、今は動作します。 – Wolfgang

+0

@Wolfgangこの回答が[問題を解決しました](http://stackoverflow.com/help/someone-answers)である場合は、[同意します](http://meta.stackexchange.com/questions/5234)をクリックしてください答えの左側にあるチェックマーク/目盛りに緑色に変えてください。これは、あなたと満足して解決された問題と、あなたと回答した人の両方に[評判](http://stackoverflow.com/help/whats-reputation)賞を与えます。一度あなたが評判ポイントを15点以上持っていれば、あなたは望むなら答えをアップヴォートすることもできます。いずれかを行う義務はありません。 – MattDMo

関連する問題