やったこと
math.floorを使って指定した桁数で切り捨てる関数int_floor()を作りました。
やりたいこと
この関数の戻り値をうまく使って、他の関数をすっきり記述したい。
問題点
このように普通に第一引数に数字を入れれば問題なく実行できるのですが、
python
1def int_floor(num, range): 2 return int(math.floor(num / float(range) * range)) 3 4int_floor(1650, 100)
他の関数の中で使うとエラーが出ます。
python
1import math 2price = 3.75 3num_pack = 50 4qua_pack = 50 5tariff_rate = 0.298 6rate = 107.98 7transport_fee = 68.82 8 9def main(): 10 pay = calc_pay(price, num_pack, transport_fee, rate) 11 tax = calc_tax(price, num_pack) 12 tariff = calc_tariff(tariff_rate) 13 consumption = calc_consumption() 14 local_con = calc_LocalConsumption() 15 tobaccotax = calc_TobaccoTax() 16 17 print( 18 "代金:", pay, "\n", 19 "課税価格:", tax, "\n", 20 "関税:", tariff, "\n", 21 "消費税:", consumption, "\n", 22 "地方消費税:", local_con, "\n", 23 "たばこ税:", tobaccotax, "\n", 24 "合計税金額:", tariff + consumption + local_con + tobaccotax, "\n", 25 "合計金額:",pay + tariff + consumption + local_con + tobaccotax, "\n", 26 ) 27 28def int_floor(num, range): 29 return int(math.floor(num / float(range) * range)) 30 31def calc_pay(price, num_pack, transport_fee, rate): 32 return int(math.ceil((price * num_pack + transport_fee) * rate)) 33 34def calc_tax(price, num_pack): 35 return int(math.ceil(price * num_pack *0.6)) 36 37def calc_tariff(tariff_rate): 38 return int_floor(int_floor(tax, 1000) * tariff_rate, 100) 39 40def calc_consumption(): 41 return int_floor(int_floor(pay + tariff, 1000) * 0.078, 100) 42 43def calc_LocalConsumption(): 44 return int_floor(consumption * 22 / 78, 100) 45 46def calc_TobaccoTax(num_pack, qua_pack): 47 return 13244 * num_pack * qua_pack / 1000 48 49main() 50 51
このようにint_floorのreturnをint_floorの第一引数に代入する形にするとエラーが出てしまいます。
python
1TypeError Traceback (most recent call last) 2<ipython-input-25-263240bbee7e> in <module> 3----> 1 main() 4 5<ipython-input-24-5926fed5c615> in main() 6 10 pay = calc_pay(price, num_pack, transport_fee, rate) 7 11 tax = calc_tax(price, num_pack) 8---> 12 tariff = calc_tariff(tariff_rate) 9 13 consumption = calc_consumption() 10 14 local_con = calc_LocalConsumption() 11 12<ipython-input-24-5926fed5c615> in calc_tariff(tariff_rate) 13 36 14 37 def calc_tariff(tariff_rate): 15---> 38 return int_floor(int_floor(tax, 1000) * tariff_rate, 100) 16 39 17 40 def calc_consumption(): 18 19<ipython-input-24-5926fed5c615> in int_floor(num, range) 20 27 21 28 def int_floor(num, range): 22---> 29 return int(math.floor(num / float(range) * range)) 23 30 24 31 def calc_pay(price, num_pack, transport_fee, rate): 25 26TypeError: unsupported operand type(s) for /: 'function' and 'float' 27
int_floor()はreturnで整数型を返すようにしているのに、なぜこのようなエラーになるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/02 10:27