计算器错误:TypeError:“float”对象不是callab

2024-07-05 14:22:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python来完成我的最后一个项目。我已经开始做一个简单的计算器。代码快完成了,但我有个错误。在

程序给我的结果很好,但当我试图做另一个操作程序给我这个问题:

TypeError: 'float' object is not callable

程序显示选择操作员的菜单。然后,询问用户number1和number2的值,并通过函数def numero1()def numero2()检查该值是否为数字

你能帮我解决这个问题吗?在

程序代码如下:

import os #Importamos librerias que se usan en el programa
import sys
import time

def menu(): #Funcion para crear el menu
    os.system('cls') 
    print ("********** Menu de la calculadora **********")
    print ("\t1 - Sumar")
    print ("\t2 - Restar")
    print ("\t3 - Multiplicar")
    print ("\t4 - Dividir")
    print ("\t9 - Salir") 

def numero1(): #Funcion para introduir un numero como primer valor 
     while True:
        try:
            numero1 = float(input("Inserta el primer valor: "))
        except ValueError:
            print("Introduce un número")
        else:
            return numero1

def numero2(): #Funcion para introducir un numero como segundo valor 
    while True:
        try:
            numero2 = float(input("Inserta el segundo valor: "))
        except ValueError:
            print("Introduce un número")
        else:
            return numero2

#Definimos 2 variables que vamos a usar
operador = 0
i = 1

#Mientas que la variable i sea mayor que cero se ejecuta el bucle (SIEMPRE)
while i > 0 :
    # Mostramos el menu
    menu()
    #Preguntamos que operacion quiere realizar
    operador = input("¿Que operación quieres realizar?: ")
    while operador != "1" and operador != "2" and operador != "3" and operador != "4" and operador != "9":
        os.system('cls')
        menu()
        print("Introduce un operador correcto")
        operador = input("¿Que operación quieres realizar?: ")

    if operador == "9": #Si es 9 cerramos el programa
        os.system('cls')
        print("SALIENDO.")
        time.sleep(1)
        os.system('cls')
        print("SALIENDO..")
        time.sleep(1)
        os.system('cls') 
        print("SALIENDO...")
        time.sleep(1)
        sys.exit()


    #Realizamos una operacion u otra
    if operador == "1":
        numero1 = numero1()
        numero2 = numero2()
        resultado = numero1 + numero2        
    elif operador == "2":
        numero1 = numero1()
        numero2 = numero2()
        resultado = numero1 - numero2      
    elif operador == "3":
        numero1 = numero1()
        numero2 = numero2()
        resultado = numero1 * numero2
    elif operador == "4":
        numero1 = numero1()
        numero2 = numero2()
        resultado = numero1 / numero2    

    #Mostramos el resultado en pantalla y preguntamos si realizamos otra operación    
    print("El resultado es: ",resultado)
    salir =(input("Pulsa cualquier tecla para realizar otra operación o 9 para salir..."))
    if salir == "9":
        os.system('cls')
        print("SALIENDO.")
        time.sleep(1)
        os.system('cls')
        print("SALIENDO..")
        time.sleep(1)
        os.system('cls') 
        print("SALIENDO...")
        time.sleep(1)
        sys.exit()

Tags: timeosdefsleepsystemelquemenu
1条回答
网友
1楼 · 发布于 2024-07-05 14:22:48

不应使用与函数名相同的变量名。一个会覆盖另一个。如果执行numero1 = numero1(),则该作用域中的numero1将永久成为浮点数,并且函数对象将不再可访问。在

更改变量名,使它们都不是numero1或{}。在

相关问题 更多 >