2015-04-02 15 views
0

У меня есть простой скрипт, который пытается вычислить площадь и окружность круга. На первой итерации цикла он работает отлично. Тем не менее, на втором он ломается, говоря, что объект «float» не является вызываемым ». Любые идеи о том, что не так? СообщениеОбъект Float не вызываемый python

Ошибка:

Traceback (most recent call last): 
    File "C:/Users/Administrator/Google Drive/School/Spring 2015/Scripting/ITD2313-Portfolio-GandyBrandon/Assignments/Hands-on & Labs/Question1.py", line 16, in <module> 
    area = area(radius) 
TypeError: 'float' object is not callable 

Код:

import math 
finished = False 
def area(number): 
    area = math.pi * (number**2) 
    return area 
def circum(number): 
    c = 2 * math.pi * number 
    return c 
while (finished == False): 
    radius = 0 
    radius = int(input("Please input the radius: ")) 
    if radius <= 0: 
     print ("Exitting the program...") 
     finished = True 
    else: 
     area = area(radius) 
     circum = circum(radius) 
     print (area)  
     print (circum) 
+3

У вас есть переменные с именем 'area' и' circum' и функции с тем же именем. Не делай этого. Кроме того, в следующий раз, пожалуйста, разместите *** полный текст *** ошибки или трассировки, поскольку он указывает прямо на то, где происходит ошибка. – MattDMo

+1

Не отвечая на ваш вопрос, но ваша переменная 'finished' является логической. Вы не должны явно писать 'while finished == False', вы можете просто использовать boolean, например:' while finished' или 'while! finished'. – JNevens

+0

@JNevens Я пробовал этот синтаксис у Python, не имел его. – OysterMaker

ответ

3

Вы отменяя определение функции:

Вы устанавливаете

area = area(radius) 
circum = circum(radius) 

и во втором цикле вы собираетесь делать то же самое и так далее. Измените имя функции на что-то вроде calculate_area или calculateArea и аналогичным образом для circum (то есть calculate_circum или calculateCircum), чтобы избежать таких путаниц.

+0

Это трюк, спасибо, сэр. – OysterMaker

+0

Нет проблем. Обычно вы пытаетесь придерживаться правил при наименовании объектов вообще, вы увидите, что вы столкнетесь с такой проблемой реже и это сэкономит вам время. – nikaltipar

+0

Хорошие советы, я ценю вашу помощь. – OysterMaker

Смежные вопросы