Поворот Typeerror не может быть вызван. Я пытаюсь понять, почему мой оператор elif не может быть вызван

from cisc106_32 import* def BillAmount(mb): if mb <= 50: price=50 elif 50<mb<=400: price=(66.50+(.05)(mb-50.00)) elif 400<mb<=1000: price=(72.00+(.08)(mb-50.00)) else: price=100.00 return price assertEqual(BillAmount(45),50) assertEqual(BillAmount(400),84) assertEqual(BillAmount(2000),100) 

В большинстве языков программирования при умножении чисел вам нужно * . например:

 result = (0.5) * (mb - 50.00) 

(в отличие от математики, когда вы пишете result=(0.5)(y)(500) и подразумевается умножение).

Вы пытаетесь сделать число с плавающей точкой в ​​функции:

 (.05)(mb-50.00) 

Если вы хотите умножить два значения, используйте * :

 (.05) * (mb-50.00) 

Иллюстрация:

 >>> mb=51 >>> (.05)(mb-50.00) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'float' object is not callable >>> (.05)*(mb-50.00) 0.050000000000000003 

В Python () рассматривается как function operator . Итак, если вы добавляете скобки к любому слову в Python, он становится вызовом функции (ну, есть некоторые исключения, хотя, но это не проблема).

Итак, если вы это сделаете: – (2)(5) , вы не умножаете 2 и 5, скорее вы пытаетесь вызвать функцию 2 которая не существует с аргументом 5 ..

Итак, добавьте * между этими скобками, чтобы сделать это (2)*(5)