Python 计算器错误:TypeError:';浮动';对象不可调用
我必须学习Python来完成我的最后一个项目。我已经开始做一个简单的计算器了。代码即将完成,但我有一个错误 程序给我的结果很好,但当我尝试做另一个操作时,程序给我这个问题: 类型错误:“float”对象不可调用 程序显示菜单以选择操作员。然后,通过函数def numero1()和def numero2()询问用户number1和number2的值,并检查该值是否为数字 请你帮我解决一下好吗 程序代码如下所示:Python 计算器错误:TypeError:';浮动';对象不可调用,python,function,calculator,typeerror,Python,Function,Calculator,Typeerror,我必须学习Python来完成我的最后一个项目。我已经开始做一个简单的计算器了。代码即将完成,但我有一个错误 程序给我的结果很好,但当我尝试做另一个操作时,程序给我这个问题: 类型错误:“float”对象不可调用 程序显示菜单以选择操作员。然后,通过函数def numero1()和def numero2()询问用户number1和number2的值,并检查该值是否为数字 请你帮我解决一下好吗 程序代码如下所示: import os #Importamos librerias que se usan
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()
您不应该使用与函数名相同的变量名。一个将覆盖另一个。如果执行
numero1=numero1()
,则该范围内的numero1
将永久变为浮点数,并且函数对象将不再可访问
请更改您的变量名称,使它们都不是
numero1
或numero2
完全回溯,并尝试打印type(float)
,您可能已被其他内容遮挡了类型。当您检查operador
是否等于“1”
,“2”
,“3”
,或“4”
,您在每种情况下都不必要地重复了相同的代码行。只需将它们放在该部分的第一个if
语句上方,即可提高代码的清晰度。哦,谢谢!!我不知道变量的名称和函数的名称必须不同。我已经更改了函数名numero1现在是n1,numero2现在是n2。但是我仍然不知道为什么一次手术后这些功能不可用。。。