You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:43:27