平台上搜一下好像只有简单四则运算的计算器, 只好自己动手做了一个.  能够运算 中括号, 小括号, 乘方, 连乘连除.  

c python windows 混合 python中混合运算_c python windows 混合

'''计算器'''

import re

def 查找_运算_替换__乘方(需要运算的内容):
	
	乘方内容列表 = re.findall('\d+\.?\d*\*\*\d+\.?\d*',需要运算的内容)
	
	while len(乘方内容列表) > 0 :
		
		for 乘方内容 in 乘方内容列表:
			
			需要乘方的数字 = re.split('\*\*', 乘方内容)
			乘方内容结果 = float(需要乘方的数字[0])**float(需要乘方的数字[1])
			乘方内容结果 = str(乘方内容结果)
			
			乘方内容 = re.escape(乘方内容)
			需要运算的内容 = re.sub(乘方内容,乘方内容结果,需要运算的内容,1)
			
			
		乘方内容列表 = re.findall('\d+\.?\d*\*\*\d+\.?\d*',需要运算的内容)
	return 需要运算的内容

def 查找_运算_替换__乘除(需要运算的内容):
	
	乘除内容列表 = re.findall('\d+\.?\d*[\*|\/]\d+\.?\d*',需要运算的内容)
	while len(乘除内容列表) > 0 :
		
		for 乘除内容 in 乘除内容列表:
			if '*' in 乘除内容:
				需要乘除的数字 = re.split('\*', 乘除内容)
				
				乘除内容结果 = float(需要乘除的数字[0])*float(需要乘除的数字[1])
			if '/' in 乘除内容:
				需要乘除的数字 = re.split('\/', 乘除内容)
				
				乘除内容结果 = float(需要乘除的数字[0])/float(需要乘除的数字[1])
			乘除内容结果 = str(乘除内容结果)
			
			
			乘除内容 = re.escape(乘除内容)
			需要运算的内容 = re.sub(乘除内容,乘除内容结果,需要运算的内容,1)
			
			
		乘除内容列表 = re.findall('\d+\.?\d*[\*|\/]\d+\.?\d*',需要运算的内容)
	return 需要运算的内容

def 查找_运算_替换__加减(需要运算的内容):
	
	加减内容列表 = re.findall('\d+\.?\d*[\+|\-]\d+\.?\d*',需要运算的内容)
	while len(加减内容列表) > 0 :
		
		for 加减内容 in 加减内容列表:
			
			if '+' in 加减内容:
				需要加减的数字 = re.split('\+', 加减内容)
				
				加减内容结果 = float(需要加减的数字[0])+float(需要加减的数字[1])
			if '-' in 加减内容:
				需要加减的数字 = re.split('\-', 加减内容)
				
				加减内容结果 = float(需要加减的数字[0])-float(需要加减的数字[1])
			加减内容结果 = str(加减内容结果)
			
			
			加减内容 = re.escape(加减内容)
			需要运算的内容 = re.sub(加减内容,加减内容结果,需要运算的内容,1)
			
			
		加减内容列表 = re.findall('\d+\.?\d*[\+|\-]\d+\.?\d*',需要运算的内容)
	return 需要运算的内容

def 有小括号先算小括号(需要运算的内容):
	小括号内容列表 = re.findall('\(.+\)',需要运算的内容)
	
	while len(小括号内容列表) > 0 :
		
		for 小括号内容 in 小括号内容列表:
			
			小括号内容结果 = 查找_运算_替换__乘方(小括号内容)
			
			小括号内容结果 = 查找_运算_替换__乘除(小括号内容结果)
			
			小括号内容结果 = 查找_运算_替换__加减(小括号内容结果)
			
			小括号内容结果 = re.search('\((.*)\)',小括号内容结果).group(1)
			
			小括号内容 = re.escape(小括号内容)
			需要运算的内容 = re.sub(小括号内容,小括号内容结果,需要运算的内容,1)
		
		小括号内容列表 = re.findall('\(.+\)',需要运算的内容)		
	return 需要运算的内容

def 有中括号先算中括号(需要运算的内容):
	中括号内容列表 = re.findall('\[.+\]',需要运算的内容)
	while len(中括号内容列表) > 0 :
		
		for 中括号内容 in 中括号内容列表:
			
			中括号内容结果 = 有小括号先算小括号(需要运算的内容)
			
			中括号内容结果 = 查找_运算_替换__乘方(中括号内容结果)
			
			中括号内容结果 = 查找_运算_替换__乘除(中括号内容结果)
			
			中括号内容结果 = 查找_运算_替换__加减(中括号内容结果)
			
			中括号内容结果 = re.search('\[(.*)\]',中括号内容结果).group(1)
			
			中括号内容 = re.escape(中括号内容)
			需要运算的内容 = re.sub(中括号内容,中括号内容结果,需要运算的内容,1)
		
		中括号内容列表 = re.findall('\[.+\]',需要运算的内容)
	return 需要运算的内容


print('欢迎使用小茶花的计算器~')
while True:
	需要运算的内容 = input('请输入需要计算的内容:\t')
	if 需要运算的内容 == 'q':
		break
	try:
		需要运算的内容 = 有中括号先算中括号(需要运算的内容)
		需要运算的内容 = 有小括号先算小括号(需要运算的内容)
		需要运算的内容 = 查找_运算_替换__乘方(需要运算的内容)
		需要运算的内容 = 查找_运算_替换__乘除(需要运算的内容)
		需要运算的内容 = 查找_运算_替换__加减(需要运算的内容)
		print('结果为:\t',需要运算的内容)
	except ZeroDivisionError:
		print('产生了为0的除数')