📅  最后修改于: 2023-12-03 15:39:23.777000             🧑  作者: Mango
这是一个用Python编写的工作表程序,可以从用户那里接收带3个或更多数字的十进制加减法表达式,计算表达式的值并将结果打印到控制台中。
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)
该程序实现了一个简单的计算器,可以接收带有3个或更多数字的十进制加减法表达式,并计算表达式的值。程序采用正则表达式分离表达式中的数字和运算符。如果表达式缺少数字或运算符,则返回None;否则,程序按照运算符的优先级从左到右计算表达式的值,并将结果打印到控制台中。
程序使用了Python中的re模块来处理正则表达式。re.findall函数可以返回表达式中所有匹配的子字符串的列表。表达式[-+]?\d*.\d+|[-+]?\d+可以匹配一个十进制数字,包括正负号和小数点。对于加减法表达式,表达式中的数字和运算符以交替顺序出现,因此程序可以按照奇偶数的顺序依次处理表达式中的数字和运算符。
用户可以从控制台输入表达式,程序将自动计算表达式的值并将结果打印到控制台中。如果输入的表达式缺少数字或运算符,则程序将返回一个None值。如果用户希望结束程序,可以输入q并按下回车键。