使用python实现计算器功能

Posted Guo磊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python实现计算器功能相关的知识,希望对你有一定的参考价值。

# 实现带括号的复杂加减乘除优先级运算
# 主要运用到了正则表达式、while循环、列表的几种方法等。
# 为实现要求的运算功能该代码共分为两个部分,一个是实现不带括号的加减乘除运算的函数add_sub_mul_div
# 另外一个是一个循环加6行代码来不断去掉最内层括号并完成括号内表达式,该部分将不断调用函数add_sub_mul_div
# 实例 a = \'1-2*(3+4/((5-6*7)+8)*9/10-(11+12)*13*14/15/(16-17)/18/19)*20\'
# 运算结果 a = -146.67385897694427

# 代码正文:

 1 import re
 2 a = \'1-2*(3+4/((5-6.0*7)+8)*9/10-(11+12)*13*14/15/(16-17)/18/19)*20\'
 3 b = re.findall(\'([\\d\\.]+|-[\\d\\.]+|\\+|/|\\*|-|\\(|\\))\', a)
 4 
 5 
 6 def add_sub_mul_div(exp):
 7     # 完成复杂的不带括号的加减乘除运算
 8     sum = 0
 9     while \'*\' in exp and \'/\' in exp:
10         # 遵循乘除运算从左到右计算
11         i = exp.index(\'*\')
12         j = exp.index(\'/\')
13         if i < j:
14             exp[i] = float(exp[i-1]) * float(exp[i+1])
15             del exp[i+1], exp[i-1]
16         else:
17             exp[j] = float(exp[j-1]) / float(exp[j+1])
18             del exp[j+1], exp[j-1]    
19     while \'*\' in exp:
20         # 乘法运算
21         i = exp.index(\'*\')
22         exp[i] = float(exp[i-1]) * float(exp[i+1])
23         del exp[i+1], exp[i-1]
24     while \'/\' in exp:
25         # 除法运算
26         i = exp.index(\'/\')
27         exp[i] = float(exp[i-1]) / float(exp[i+1])
28         del exp[i+1], exp[i-1]
29     while \'+\' in exp:
30         # 加法运算
31         i = exp.index(\'+\')
32         exp[i] = float(exp[i-1]) + float(exp[i+1])
33         del exp[i+1], exp[i-1]
34     while \'-\' in exp:
35         # 减法运算
36         i = exp.index(\'-\')
37         exp[i] = float(exp[i-1]) - float(exp[i+1])
38         del exp[i+1], exp[i-1]
39     for j in exp:
40         # 将剩余的正负数进行相加求和
41         sum += float(j)
42     return sum
43 
44 
45 while \'(\' in b:
46     y = b.index(\')\')  # 最里面的小括号中右括号的索引位置
47     list_copy = b.copy()[0:y+1]
48     list_copy.reverse()
49     x = y - list_copy.index(\'(\')  # 最里面小括号中左括号的索引位置
50     b[x] = add_sub_mul_div(b[x+1:y])  # 完成最里面小括号内加减乘除运算并赋值给左括号
51     del b[x+1:y+1]  # 删除完成运算后的小括号以及里面的表达式
52 add_sub_mul_div(b)
53 print(add_sub_mul_div(b))

 

以上是关于使用python实现计算器功能的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第19篇):合并多个字典

用python实现自动发邮件的功能

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

教你python tkinter实现简单计算器功能

具有相同功能的活动和片段

[ Python - 6 ] 正则表达式实现计算器功能