python大作业代码及文档,python大作业代码100行

大家好,小编为大家解答python大作业代码及文档的问题。很多人还不知道python大作业代码100行,现在让我们一起来看看吧!

大家好,小编来为大家解答以下问题,python期末大作业代码200行带批注,python程序设计期末大作业,今天让我们一起来看看吧!

# 题目:利用Python实现一个计算器,可以计算小数复数等

import re

def calculator(string):

# 去除括号函数

def get_grouping(string):

flag = False

ret = re.findall('\(([^()]+)\)', string)

for i in ret:

temp = cal(i)

if temp:

string = re.sub('\(([^()]+)\)', temp[1], string)

flag = True

return flag, string

# 将三个优先级集合,可以解决所有没有括号的问题,如果计算成功返回True和替换后的string,如果没有成功返回False

def cal(string):

flag = False

func_box = [priority_1, priority_2, priority_3]

for i in func_box:

while True:

ret = i(string)

if ret == False: break

else:

string = ret[1]

flag = True

return flag, string

# 第一优先级计算幂运算

def priority_1(string):

ret = re.findall('-?\d+(?:\.\d+)?\*\*-?\d+(?:\.\d+)?', string)

if not ret: return False

for i in ret:

temp_li = i.split('**')

res = float(temp_li[0]) ** float(temp_li[1])

string = re.sub('-?\d+(\.\d+)?\*\*-?\d+(\.\d+)?', str(res), string, 1)

return True, string

# 第二优先级计算乘除

def priority_2(string):

ret = re.findall('-?\d+(?:\.\d+)?[*/]-?\d+(?:\.\d+)?', string)

if not ret: return False

for i in ret:

if '/' in i:

temp_li = i.split('/')

res = float(temp_li[0]) / float(temp_li[1])

string = string.replace(i, str(res))

elif '*' in i:

temp_li = i.split('*')

res = float(temp_li[0]) * float(temp_li[1])

string = string.replace(i, str(res))

return True, string

# 第三优先级计算加键

def priority_3(string):

ret = re.findall('-?\d+(?:\.\d+)?[+-]+?\d+(?:\.\d+)?', string)

if not ret: return False

for i in ret:

if '+' in i:

temp_li = i.split('+', 1)

res = float(temp_li[0]) + int(temp_li[1])

string = string.replace(i, str(res))

else:

temp_li = i.split('-', 1)

res = float(temp_li[0]) - float(temp_li[1])

string = string.replace(i, str(res))

return True, string

# 主逻辑

string = string.replace(' ','') # 去除输入过程中的所有空格

res1, string_processed = get_grouping(string) # 先按照优先级计算好所括号内的运算

res2, result = cal(string_processed) # 按照优先级计算去除括号后的运算

if res1 == False and res2 == False: # 如果没有进行字符串的改变,返回False,字符串输入格式有误

print('ILLEGAL INPUT.')

else: print(result)

return

if __name__ == '__main__':

string = input('INPUT:\n').strip()

calculator(string)

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值