Python实现的简单计算器功能详解
在Python中实现一个简单的计算器功能并不复杂。本篇文章将介绍如何使用Python编写一个简单的计算器程序。
程序实现思路
- 用户输入要计算的算式,例如
2+3*4-5÷2
- 程序进行算式的解析和计算,并最终输出答案。
- 根据需求,用户可以继续输入算式进行计算,或者退出程序。
详细实现步骤
1. 输入算式
使用内置函数input()
获取用户输入的算式。示例如下:
formula = input("请输入算式:")
其中,formula
是表示用户输入的算式的变量名。
2. 解析算式
使用Python的正则表达式模块re
解析用户输入的算式。具体来说,我们可以使用正则表达式来匹配算式中的数字、符号等元素,然后进行操作,最终得到算式的计算结果。
import re
# 正则表达式的匹配规则
pattern = r'(\d+\.?\d*)|([+\-*/()])'
# 使用正则表达式解析算式
tokens = re.findall(pattern, formula)
在以上代码中,pattern
表示我们在正则表达式中使用的匹配规则,也就是匹配数字或运算符号。findall()
方法会从字符串中查找出所有匹配pattern
的字符串,并返回一个列表。
3. 计算算式
根据上一步得到的算式元素列表,实现计算逻辑。具体来说,我们可以使用栈来存储运算符和数字,按顺序依次处理每个元素,最终得到计算结果。
# 实现计算逻辑
stack = []
operators = {"+": lambda x, y: x + y, "-": lambda x, y: x - y,
"*": lambda x, y: x * y, "/": lambda x, y: x / y}
for token in tokens:
if token[0]:
stack.append(float(token[0]))
else:
while stack and token[1] != "(" and operators[token[1]] <= operators.get(stack[-1], 0):
right = stack.pop()
left = stack.pop() if stack and stack[-1] != "(" else right
stack.append(operators[token[1]](left, right))
if token[1] == ")":
stack.pop()
else:
stack.append(token[1])
result = stack[0]
在以上代码中,我们实现了一个基于栈的计算逻辑。遍历解析得到的算式元素列表,根据元素类型分别进行处理。
4. 输出结果
使用print()
函数输出计算结果即可。
print("计算结果为:{}".format(result))
5. 完整代码
import re
def calculator():
# 输入算式
formula = input("请输入算式:")
# 解析算式
pattern = r'(\d+\.?\d*)|([+\-*/()])'
tokens = re.findall(pattern, formula)
# 实现计算逻辑
stack = []
operators = {"+": lambda x, y: x + y, "-": lambda x, y: x - y,
"*": lambda x, y: x * y, "/": lambda x, y: x / y}
for token in tokens:
if token[0]:
stack.append(float(token[0]))
else:
while stack and token[1] != "(" and operators[token[1]] <= operators.get(stack[-1], 0):
right = stack.pop()
left = stack.pop() if stack and stack[-1] != "(" else right
stack.append(operators[token[1]](left, right))
if token[1] == ")":
stack.pop()
else:
stack.append(token[1])
result = stack[0]
# 输出结果
print("计算结果为:{}".format(result))
if __name__ == "__main__":
while True:
calculator()
decision = input("是否继续计算?(Y/N):")
if decision.lower() == "n":
break
示例说明
假设用户要计算表达式2+3*4-5÷2
,我们可以按照以上代码的方法进行计算。
输入:2+3*4-5÷2
输出:计算结果为:11.5
同样,我们可以计算更复杂的表达式,例如:
输入:(3+5)÷2-6×0.5
输出:计算结果为:-0.5
总结
本篇文章介绍了如何使用Python实现一个简单的计算器功能。主要步骤包括输入算式、解析算式、计算算式和输出结果。通过本篇文章的介绍,读者可以学习到如何使用Python进行字符串解析和基于栈的计算。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现的简单计算器功能详解 - Python技术站