2017-10-26 7 views
1

私は本質的に2つの辺が入力されると、それは3番目を生成する単純な電卓を作る必要があります。私はsqrt関数に少し問題があります。これはこれまで私が持っていたものですトライアングル計算機Python

import math 

print("It's triangle fun time! Enter the numbers you know, and a ? for the number you don't.") 

sideA = int(input("Side A: ")) 
sideB = int(input("Side B: ")) 
sideC = int(input("Hypotenuse: ")) 

if sideA == ("?"): 
    print("Side A =", sideC ** 2 - sideB**2) 

elif sideB == ("?"): 
    print("Side B =", sideC ** 2 - sideA**2) 

elif sideC == ("?"): 
    print("Side C =", math.sqrt(sideA)**2 + (sideB)**2) 

何か助けていただければ幸いです!

編集 - コード

を更新(そこsideCと**と2の間にスペースがありませんが、それはそれはので、私はそれを変更太字だった)

+1

あなたが( "?") '' STRを記述する必要はありません、それはすでに変更文字列 – yash

+0

です、ありがとうございます – mememan9001

+0

また、平等テストのために[is * is never use](https://stackoverflow.com/questions/1504717/why-does-comparing-strings-in-python-using-either-or-時々生産される#1504742);ここで動作することは、CPythonの実装の詳細であり、変更される可能性があります。 – trentcl

答えて

0

私はそれを得ました!

輸入数学

プリント( "それは三角形楽しい時間です!そうでない数のためにあなたが知っている数字を入力し、 '0'。")

SIDEA =(int型(入力( "サイドA: ")))

SideBの=(INT(入力(" サイドB: ")))

sideC =(INT(入力(" 斜辺:")))

場合sideAは0:

です。
sideA = math.sqrt((sideC**2) - (sideB**2)) 
print("Side A =", sideA) 

SideBのが0の場合:

sideB = math.sqrt((sideC**2) - (sideA**2)) 
print("Side B =", sideB) 

sideCが0の場合:

sideC = math.sqrt((sideA**2) + (sideB)**2) 
print("Side C =", sideC) 
1

あなたはsqrt()を使用するために数学を輸入したことがありますか?

import math 
math.sqrt(4) 
+0

私はこれが(最後の最新の呼び出し) – mememan9001

+0

トレースバックを起こることが、試してみました: ファイル "C:\ Python34 \問題5.py"、2行目、 math.sqrt() TypeError例外で:SQRT()は正確にとり1つの引数(0が指定されている) – mememan9001

+0

()を空のままにすると、 'math.sqrt()'の平方根を取ることになります。 –

0

ℝの数値はmathモジュールにあります。

対応して、inの数式はcmathです。

+0

'R' - >' python'? –

+0

@PatrickHaugh私はそれが実数の領域であると考えていますが、これは本当の答えではありません。 –

+0

@PatrickHaugh:いいえ、ℝ。全く違うもの。 –

4

私はあなたがinput()関数は、文字列ではなく整数を返すPythonの3

  • を使用していると仮定しています。 ?入力ではないことを確認した後、文字列から整数に変換する必要があります。これを行うには、int()

  • 比較のためにisを使用しないでくださいを使用し、あなたは数学のモジュールからsqrt機能をインポートしましたに==

  • を使うのか?

+0

私はこれらのものを変更しましたが、輸入SQRT、私がいない場合、それは私が トレースバック(最新の呼び出しの最後)する必要があると述べている: ファイル "C:\ Python34 \問題5.py" math.sqrtで、2行目、() TypeError:sqrt()はちょうど1つの引数(与えられた0)を受け取ります – mememan9001

+0

@ mememan9001上に示したコードはこれを反映していません。 'math.sqrt()'を使うときには、関数に引数を追加する必要があります。例えば 'math.sqrt(4)'は2を返します) – TerryA

+0

私は最後の行を プリント( "サイドC ="、math.sqrt(SIDEA ** 2 + SideBの** 2)) しかし、私はまだ トレースバック(最新の呼び出しの最後)を取得: ファイル「C:\ Python34 \問題( "C ="、math.sqrt(sideA ** 2 + sideB ** 2)) TypeError:**またはpow()のサポートされていないオペランドの型です。 : 'str'と 'int' – mememan9001

0
import math 
# Your code here 
math.sqrt(sideA **2 + sideB **2) 
+0

トレースバック(直近の最後の呼び出し): ファイル "C:\ Python34 \ Problem 5.py"、行16、 print( "Side C ="、math.sqrt(sideA ** 2 + sideB ** 2 )) TypeError:**またはpow()のサポートされないオペランドタイプ: 'str'および 'int' – mememan9001

+0

上記のように、input()関数は数字ではなく文字列を返します。したがって、入力を数値に変換する必要があります。試してみてください:numA = float(sideA)、numB = float(sideB)。そして、numC = math.sqrt(numA ** 2 + numB ** 2) – kader