📜  带3个或更多数字的十进制加减法:工作表(1)

📅  最后修改于: 2023-12-03 15:39:23.777000             🧑  作者: Mango

带3个或更多数字的十进制加减法:工作表

这是一个用Python编写的工作表程序,可以从用户那里接收带3个或更多数字的十进制加减法表达式,计算表达式的值并将结果打印到控制台中。

1 代码实现
import re

def compute(expression: str) -> float:
    """
    计算带3个或更多数字的十进制加减法表达式的值

    :param expression: 带3个或更多数字的十进制加减法表达式
    :return: 表达式计算结果
    """
    # 分离表达式中的数字和运算符
    items = re.findall(r"[-+]?\d*\.\d+|[-+]?\d+", expression)
    # 如果表达式缺少数字或运算符,则返回 None
    if len(items) < 3 or len(items) % 2 == 0:
        return None
    # 初始化计算结果为第一个数字
    result = float(items[0])
    # 依次处理表达式中的每个运算符和数字
    for i in range(1, len(items), 2):
        op = items[i]
        num = float(items[i+1])
        if op == "+":
            result += num
        elif op == "-":
            result -= num
    return result


while True:
    expression = input("请输入带有3个或更多数字的十进制加减法表达式(输入q退出):")
    if expression.lower() == "q":
        break
    result = compute(expression)
    if result is None:
        print("输入的表达式不合法!")
    else:
        print("计算结果为:", result)
2 代码说明

该程序实现了一个简单的计算器,可以接收带有3个或更多数字的十进制加减法表达式,并计算表达式的值。程序采用正则表达式分离表达式中的数字和运算符。如果表达式缺少数字或运算符,则返回None;否则,程序按照运算符的优先级从左到右计算表达式的值,并将结果打印到控制台中。

程序使用了Python中的re模块来处理正则表达式。re.findall函数可以返回表达式中所有匹配的子字符串的列表。表达式[-+]?\d*.\d+|[-+]?\d+可以匹配一个十进制数字,包括正负号和小数点。对于加减法表达式,表达式中的数字和运算符以交替顺序出现,因此程序可以按照奇偶数的顺序依次处理表达式中的数字和运算符。

3 使用说明

用户可以从控制台输入表达式,程序将自动计算表达式的值并将结果打印到控制台中。如果输入的表达式缺少数字或运算符,则程序将返回一个None值。如果用户希望结束程序,可以输入q并按下回车键。