python 简单编写的计算器程序示例

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

计算器思路

1、要求输入公式

2、检测公式是否包含字母

3、如果包含字母则需要重新输入,否则进行下一步运算

4、检测是否存在括号,如果存在括号,把括号里面的值进行优先级运算,然后赋值到原位,没有则按照优先级运算,取出最后运算结果

流程图

具体代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'weibinf'
import re #导入模块
def kuohao(self): #判断是否存在括号
self = list(self)
if self.count(')') != 0 :
for k,v in enumerate(self):
if v == ")":
x = k
a = self[0:k]
q = a.count("(")
qq = 0
for k,v in enumerate(a):
if v == "(":
z = k
qq +=1
if q == qq :
b = self[z+1:x]
c = str(fushu(b))
del self[z:x+1]
self.insert(z,c)
return kuohao(self)
else:
return fushu(self)
def fushu(self):#取出所有运算符和相应运算数字
temp = ''
expp = []
self = list(self)
i = 0
for k,v in enumerate(self):
if v == '+' or v == '-' or v == '*' or v == '/':
if k == 0 or self[k-1] == "+" or self[k-1] == "-" or self[k-1] == "*" or self[k-1] == "/" :
temp += v
else:
expp.append(int(temp))
expp.append(v)
temp = ''
else:
temp += v
if i == len(self) -1 :
expp.append(int(temp))
i +=1
return zhengshu(expp)
def get_aob(a, o, b):#运算方式
if o == '+':
return a + b
elif o == '-':
return a - b
elif o == '*':
return a * b
elif o == '/':
return a / b
def zhengshu(exp_list):#运算公式
if len(exp_list) == 1:
return exp_list[0]
else:
q = exp_list.count("*")
w = exp_list.count("/")
if q != 0 or w != 0:
for k,v in enumerate(exp_list):
if v == "*" or v == "/":
a = exp_list[k - 1]
o = exp_list[k]
b = exp_list[k+1]
del exp_list[k]
del exp_list[k]
exp_list[k-1] = get_aob(a, o, b)
return zhengshu(exp_list)
else:
for k,v in enumerate(exp_list):
if v == "+" or v == "-":
a = exp_list[k - 1]
o = exp_list[k]
b = exp_list[k+1]
del exp_list[k]
del exp_list[k]
exp_list[k-1] = get_aob(a, o, b)
return zhengshu(exp_list)
# return zhengshu(exp_list)
while True:
calc = raw_input("\033[31m请输入需要计算的公式: \033[0m").replace(' ','').strip() #获取用户输入
a = re.findall('[a-zA-Z]+',calc) #正则匹配是否存在字母
if not len(calc) == 0 : #判断用户输入是否为空
if len(a) == 0: #判断用户输入字符串是否存在字母
print "\033[31m程序运算结果: \033[0m",kuohao(calc)
print '\033[43;1mpython计算器运算结果:\033[0m',eval(calc)
else:
print "\033[31m没有正确输入,运算字符串包含字母。\033[0m"
else:
print "\033[31m没有正确输入,请重新输入。。。\033[0m"
print "\033[31m-\033[0m" * 50

相关阅读:

python 简单编写的计算器程序示例

python实现类似ftp传输文件的网络程序示例

仅用50行代码实现一个Python编写的计算器的教程

Python实现TCP协议下的端口映射功能的脚本程序示例

Python只用40行代码编写的计算器实例

Python创建xml的方法代码示例

Python设计实现的计算器功能完整实例

Python实现完整的事务操作示例

Python实现简单的可逆加密程序示例代码

用Python编写简单的定时器的方法及示例代码

Python设计模式编程中解释器模式的简单程序示例分享

Python基于Socket实现的简单聊天程序示例