python语言的简单计算器系统的主要功能与实现
主要功能:
- 实现基本的加、减、乘、除四则运算;
- 支持小数、负数的运算;
- 支持括号计算;
- 支持连续计算。
实现:
- 读取用户输入的表达式;
- 将表达式转化为逆波兰表达式;
- 计算逆波兰表达式的结果;
- 输出计算结果。
具体实现过程:
- 读取用户输入的表达式,可以使用input()函数实现;
- 将表达式转化为逆波兰表达式,可以使用栈(Stack)来实现;
- 遍历表达式,遇到数字直接输出;
- 遇到运算符,判断栈顶运算符的优先级是否大于等于当前运算符,如果是,则将栈顶运算符弹出并输出,再将当前运算符压入栈中;
- 遇到左括号,直接将其压入栈中;
- 遇到右括号,不断弹出栈顶元素并输出,直到遇到左括号,将左括号弹出但不输出;
- 遍历结束后,将栈中剩余的运算符依次弹出并输出。
- 计算逆波兰表达式的结果,可以使用栈(Stack)来实现;
- 遍历逆波兰表达式,遇到数字就将其压入栈中;
- 遇到运算符,就弹出栈顶的两个元素进行计算,然后将计算结果压入栈中;
- 遍历结束后,栈中只剩下了一个元素,就是计算结果。
- 输出计算结果,使用print()函数即可。
完整代码实现如下:
# 定义运算符优先级
priority = {'+': 1, '-': 1, '*': 2, '/': 2}
# 将中缀表达式转换为逆波兰表达式
def infix_to_postfix(expression):
stack = []
postfix = []
for ch in expression:
if ch.isdigit() or ch == '.':
postfix.append(ch)
elif ch in priority:
while stack and stack[-1] in priority and priority[stack[-1]] >= priority[ch]:
postfix.append(stack.pop())
stack.append(ch)
elif ch == '(':
stack.append(ch)
elif ch == ')':
while stack and stack[-1] != '(':
postfix.append(stack.pop())
if stack and stack[-1] == '(':
stack.pop()
while stack:
postfix.append(stack.pop())
return postfix
# 计算逆波兰表达式的值
def postfix_eval(postfix):
stack = []
for ch in postfix:
if ch.isdigit() or ch == '.':
stack.append(float(ch))
elif ch in priority:
b = stack.pop()
a = stack.pop()
if ch == '+':
stack.append(a + b)
elif ch == '-':
stack.append(a - b)
elif ch == '*':
stack.append(a * b)
elif ch == '/':
stack.append(a / b)
return stack[0]
# 主函数,读取用户输入的表达式并输出结果
def main():
expression = input('请输入表达式:')
postfix = infix_to_postfix(expression)
result = postfix_eval(postfix)
print('计算结果为:', result)
if __name__ == '__main__':
main()
``
原文地址: https://www.cveoy.top/t/topic/creh 著作权归作者所有。请勿转载和采集!