質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

548閲覧

面積の計算ができず、エラーメッセージが表示される

Dr.DOS

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/10/29 08:52

前提・実現したいこと

1つ目の質問に2、二つ目の質問に6、3つ目の質問に1で回答し、任意の数字を4つ入力し、次に出てくる質問に0で回答したのちに任意の整数を入力すると、本来は計算結果として値が出てくるはずなのですが答えが出ず、下記のエラーメッセージが出てしまいます。解決策のご教授をお願いします。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "c:\Users\Dr.DOS.vscode\Calculator\Calculator\cal_ver1.3.5.py", line 286, in <module> all_calc_code() File "c:\Users\Dr.DOS.vscode\Calculator\Calculator\cal_ver1.3.5.py", line 281, in all_calc_code area_1 = float(math.sqrt(cal_n_6(cal_n_6 - cal_n_1),(cal_n_6 - cal_n_2),(cal_n_6 - cal_n_5_1))) TypeError: 'float' object is not callable

該当のソースコード

Python

1 elif cal_mode == '2': 2 print('面積計算モードで起動します。') 3 time.sleep(1) 4 cal_mode_3 = (input('面積を計算したい図形を入力してください。1:三角形、2:四角形、3:五角形、4:六角形、5:任意の角数の図形、6:円、7:楕円:')) 5 if cal_mode_3 == '1': 6 cal_mode_3_1 = (input('どちらの計算方法を利用しますか?3辺の長さ:1/y 底辺の長さと高さ:0/n:')) 7 if cal_mode_3_1 == 'y': 8 cal_mode_3_1 = '1' 9 if cal_mode_3_1 == 'n': 10 cal_mode_3_1 = '0' 11 if cal_mode_3_1 == '1': 12 cal_mode_3_1_1 =(input('面積を計算したい三角形の種類を選択してください。正三角形:1/y それ以外:0/n:')) 13 if cal_mode_3_1_1 == 'y': 14 cal_mode_3_1_1 ='1' 15 if cal_mode_3_1_1 == 'n': 16 cal_mode_3_1_1 = '0' 17 if cal_mode_3_1_1 == '1': 18 cal_mode_3_1_1_val = float(input('1辺の長さを入力してください。:')) 19 cal_n_1 = float(cal_mode_3_1_1_val) 20 cal_n_2 = float((cal_n_1 * 3)/2) 21 cal_n_3 = float(math.sqrt(cal_n_2*(float(3)(cal_n_2 - cal_n_1)))) 22 cal_n_3_1 = str(cal_n_3) 23 area = cal_n_3_1 24 print('面積:',area) 25 time.sleep(1) 26 print('計算を終了します。') 27 time.sleep(1) 28 sys.exit() 29 elif cal_mode_3_1_1 =='0': 30 cal_mode_3_1_1_val_1 = float(input('1つ目の辺の長さを入力してください。:')) 31 cal_mode_3_1_1_val_2 = float(input('2つ目の辺の長さを入力してください。:')) 32 cal_mode_3_1_1_val_3 = float(input('3つ目の辺の長さを入力してください。:')) 33 cal_n_1_1 = cal_mode_3_1_1_val_1 34 cal_n_1_2 = cal_mode_3_1_1_val_2 35 cal_n_1_3 = cal_mode_3_1_1_val_3 36 cal_n_2 = float((cal_n_1_1 + cal_n_1_2 + cal_n_1_3)/2) 37 cal_n_3 = float(math.sqrt(cal_n_2*(cal_n_2 - cal_n_1_1)*(cal_n_2 - cal_n_1_2)*(cal_n_2 - cal_n_1_3))) 38 area = str(cal_n_3) 39 print('面積',area) 40 time.sleep(1) 41 print('計算を終了します。') 42 time.sleep(1) 43 sys.exit() 44 else: 45 print('深刻なエラーが発生しました。プログラムを再起動します。') 46 time.sleep(1) 47 all_calc_code() 48 elif cal_mode_3_1 == '0': 49 cal_mode_3_1_2_val_1 = float(input('底辺の長さを入力してください。:')) 50 cal_mode_3_1_2_val_2 = float(input('高さを入力してください。:')) 51 cal_n_1_1 = cal_mode_3_1_2_val_1 52 cal_n_1_2 = cal_mode_3_1_2_val_2 53 cal_n_2 = float((cal_n_1_1 * cal_n_1_2)/2) 54 area = str(cal_n_2) 55 print('面積:',area) 56 time.sleep(1) 57 print('計算を終了します。') 58 time.sleep(1) 59 sys.exit() 60 else: 61 print('深刻なエラーが発生しました。プログラムを再起動します。') 62 time.sleep(1) 63 all_calc_code() 64 if cal_mode_3 == '2': 65 cal_mode_3_2 = (input('面積を計算したい四角形の種類を入力してください。1:正方形 2:長方形 3:平行四辺形 4:台形 5:菱形 6:それ以外の四角形:')) 66 if cal_mode_3_2 == '1': 67 cal_mode_3_2_1 = float(input('1辺の長さを入力してください。:')) 68 cal_n_1 = cal_mode_3_2_1 69 cal_n_2 = cal_n_1 ** 2 70 area = str(cal_n_2) 71 print('面積:',area) 72 time.sleep(1) 73 print('計算を終了します。') 74 time.sleep(1) 75 sys.exit() 76 elif cal_mode_3_2 == '2': 77 cal_mode_3_2_1 = float(input('高さを入力してください。:')) 78 cal_mode_3_2_2 = float(input('横幅を入力してください。:')) 79 cal_n_1 = cal_mode_3_2_1 80 cal_n_2 = cal_mode_3_2_2 81 cal_n_3 = cal_n_1 * cal_n_2 82 area = cal_n_3 83 print('面積:',area) 84 time.sleep(1) 85 print('計算を終了します。') 86 time.sleep(1) 87 sys.exit() 88 elif cal_mode_3_2 == '3': 89 cal_mode_3_2_1 = float(input('高さを入力してください。:')) 90 cal_mode_3_2_2 = float(input('上底/下底どちらかの長さを入力してください。')) 91 cal_n_1 = cal_mode_3_2_1 92 cal_n_2 = cal_mode_3_2_2 93 cal_n_3 = cal_n_1 * cal_n_2 94 area = cal_n_3 95 print('面積:',area) 96 time.sleep(1) 97 print('計算を終了します。') 98 time.sleep(1) 99 sys.exit() 100 elif cal_mode_3_2 == '4': 101 cal_mode_3_2_1 = float(input('高さを入力してください。')) 102 cal_mode_3_2_2 = float(input('上底の長さを入力してください。')) 103 cal_mode_3_2_3 = float(input('下底の長さを入力してください。')) 104 cal_n_1 = cal_mode_3_2_1 105 cal_n_2 = cal_mode_3_2_2 106 cal_n_3 = cal_mode_3_2_3 107 cal_n_4 = ((cal_n_2 + cal_n_3)*cal_n_1)/2 108 area = cal_n_4 109 print('面積:',area) 110 time.sleep(1) 111 print('計算を終了します。') 112 time.sleep(1) 113 sys.exit() 114 elif cal_mode_3_2 == '5': 115 cal_mode_3_2_1 = float(input('縦の対角線の長さを入力してください。:')) 116 cal_mode_3_2_2 = float(input('横の対角線の長さを入力してください。:')) 117 cal_n_1 = cal_mode_3_2_1 118 cal_n_2 = cal_mode_3_2_2 119 cal_n_3 = (cal_n_1 * cal_n_2)/2 120 area = cal_n_3 121 print('面積:',area) 122 time.sleep(1) 123 print('計算を終了します。') 124 time.sleep(1) 125 sys.exit() 126 elif cal_mode_3_2 == '6': 127 cal_mode_3_2_1 = (input('使用したい計算方法を入力してください。1:4つの辺と対角線の長さ 2:2本の対角線の長さとその交わる角度 3:ブレートシュナイダーの公式:')) 128 if cal_mode_3_2_1 == '1': 129 print('辺の長さは、上→右→下→左の順に入力してください。') 130 cal_n_1 = float(input('1つ目の辺の長さを入力してください。:')) 131 cal_n_2 = float(input('2つ目の辺の長さを入力してください。:')) 132 cal_n_3 = float(input('3つ目の辺の長さを入力してください。:')) 133 cal_n_4 = float(input('4つ目の辺の長さを入力してください。:')) 134 cal_n_5 = (input('対角線の向きを入力してください。左上から右下:0 右上から左下:1 :')) 135 if cal_n_5 == '0': 136 cal_n_5_1 = float(input('対角線の長さを入力してください。:')) 137 cal_n_6 = float((cal_n_1 + cal_n_2 + cal_n_5_1)/float(2)) 138 area_1 = float(math.sqrt(cal_n_6(cal_n_6 - cal_n_1),(cal_n_6 - cal_n_2),(cal_n_6 - cal_n_5_1))) 139 cal_n_7 = float((cal_n_3 + cal_n_4 + cal_n_5_1)/float(2)) 140 area_2 = float(math.sqrt(cal_n_7(cal_n_7 - cal_n_3)(cal_n_7 - cal_n_4)(cal_n_7 - cal_n_5_1))) 141 area_all = str(area_1 + area_2) 142 print('面積:',area_all)

試したこと

変数や数字のfloat型への変換

補足情報(FW/ツールのバージョンなど)

Python 3.97

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

cal_n_6float 型のインスタンスなのですが、次の行で cal_n_6(cal_n_6 - cal_n_1) と書いてしまっているので当該のエラーが発生しています(演算子を書き忘れている?)。

python

1cal_n_6 = float((cal_n_1 + cal_n_2 + cal_n_5_1)/float(2)) 2area_1 = float(math.sqrt(cal_n_6(cal_n_6 - cal_n_1),(cal_n_6 - cal_n_2),(cal_n_6 - cal_n_5_1)))

投稿2021/10/29 09:12

melian

総合スコア20655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Dr.DOS

2021/10/29 09:41

ありがとうございますm(_ _)m 完全に見落としていました...
guest

0

cal_mode_3_1_1_val = float(input('1辺の長さを入力してください。:'))

floatという名前の関数はありません

投稿2021/10/29 08:57

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問