如何实现Python计算器用上一次计算结果进行后续运算?
实现计算器复用上次计算结果的方案
要实现用上一次运算结果继续计算,核心是用一个变量持久存储上次的计算结果,同时修改输入逻辑,允许用户选择使用该结果作为新运算的第一个值。以下是具体修改步骤和完整代码:
1. 新增全局存储变量
在主程序开始前,定义一个变量保存上次结果,初始值设为None表示还无计算记录:
ultimo_resultado = None
2. 修改第一个值的输入逻辑
当存在上次结果时,允许用户输入=直接复用该结果;若没有则正常输入第一个值,同时优化输入验证逻辑以支持浮点数。
3. 修正原代码的逻辑错误
- 修复
valor2.isalpha == True缺少括号的问题,改为valor2.isalpha() - 修正
elif operacion == "Multiplicación" or "Multiplicacion"的逻辑错误,改为elif operacion in ("Multiplicación", "Multiplicacion"),除法判断同理 - 优化数字验证逻辑,改用
replace('.', '', 1).isdigit()支持浮点数输入
完整修改后的代码
def suma(valor1, valor2): return valor1 + valor2 def resta(valor1, valor2): return valor1 - valor2 def multiplicacion(valor1, valor2): return valor1 * valor2 def division(valor1, valor2): return valor1 / valor2 # 存储上次计算结果,初始为None ultimo_resultado = None # Main Program salir = False while not salir: operacion = input(""" ¿Qué operación quieres hacer? -Suma -Resta -Multiplicación -División -Salir """).strip() # 验证输入的运算是否合法 validas_operaciones = ("Suma", "Resta", "Multiplicación", "Multiplicacion", "División", "Division", "Salir") while operacion not in validas_operaciones: operacion = input(""" ¡Operación incorrecta! ¿Qué operación quieres hacer? -Suma -Resta -Multiplicación -División -Salir """).strip() if operacion == "Salir": salir = True continue # 处理第一个值的输入,支持使用上次结果 if ultimo_resultado is not None: valor1_input = input(f"¿Cúal es el primer valor? (输入'='使用上次结果 {ultimo_resultado}): ").strip() if valor1_input == "=": valor1 = ultimo_resultado else: # 验证输入是否为数字(支持浮点数) while not valor1_input.replace('.', '', 1).isdigit(): valor1_input = input("Valor incorrecto. Vuelve a introducir el primer valor: ").strip() valor1 = float(valor1_input) else: valor1_input = input("¿Cúal es el primer valor de la operación? ").strip() while not valor1_input.replace('.', '', 1).isdigit(): valor1_input = input("Valor incorrecto. Vuelve a introducir el primer valor: ").strip() valor1 = float(valor1_input) # 处理第二个值的输入 valor2_input = input("¿Cúal es el segundo valor de la operación? ").strip() while not valor2_input.replace('.', '', 1).isdigit(): valor2_input = input("Valor incorrecto. Vuelve a introducir el segundo valor: ").strip() valor2 = float(valor2_input) # 执行运算并更新上次结果 resultado = None if operacion == "Suma": resultado = suma(valor1, valor2) print(f"El resultado de {valor1} más {valor2} es igual a {resultado}") elif operacion == "Resta": resultado = resta(valor1, valor2) print(f"El resultado de {valor1} menos {valor2} es igual a {resultado}") elif operacion in ("Multiplicación", "Multiplicacion"): resultado = multiplicacion(valor1, valor2) print(f"El resultado de {valor1} por {valor2} es igual a {resultado}") elif operacion in ("División", "Division"): while valor2 == 0: valor2_input = input("El resultado no se puede calcular, es infinito. Vuelve a introducir un segundo valor: ").strip() while not valor2_input.replace('.', '', 1).isdigit(): valor2_input = input("Valor incorrecto. Vuelve a introducir el segundo valor: ").strip() valor2 = float(valor2_input) resultado = division(valor1, valor2) print(f"El resultado de {valor1} entre {valor2} es igual a {resultado}") # 更新上次结果为当前运算结果 ultimo_resultado = resultado
功能说明
- 首次计算需正常输入两个数值
- 后续计算时,在第一个值的输入位置输入
=,即可自动复用上次运算结果作为新运算的第一个值 - 优化了输入验证逻辑,支持整数和浮点数输入
- 修复原代码中的逻辑漏洞,确保运算判断准确
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

