练习:求字符串中最长的表达式,并计算结果--python实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了练习:求字符串中最长的表达式,并计算结果--python实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2228字,纯文字阅读大概需要4分钟。
内容图文
1、判断字符串长度、最长的表达式
""" 1、所有数字,计算长度不能超过long 2、如果有多个长度一样,请返回第一个表达式结果 3、数学表达式必须要是最长的,合法的 4、操作符不能是连续的,如 +--+1是不合法的 """ import re s = input("请输入字符串:") #保留只有0-9 +-*字符 list1 = re.findall("[-+*0-9]+",s) s0 = "" for s1 in list1: lens = 0 T = True for s2 in s1:#判断是否有连续的运算符 if s2 in ["-","+","*"]: lens+=1 if lens > 1: print("不合法表达式:",s1) T = False break else: lens = 0 if T:#求出最长的表达式 if len(s0)<len(s1): s0 = s1 if s0 == "": A=0 else: if s0[0] == "*": s0 = s0[1:] if s0.find("*") == 1: print("暂时无法计算乘法:",s0) else: A = eval(s0) else: if s0.find("*") == 1: print("暂时无法计算乘法:", s0) else: A = eval(s0) print(A)
2、计算器方法--百度的方法
# judgment a char is a operation or not from pip._vendor.distlib.compat import raw_input def is_operation(oper): if oper == '+' or oper == '-' or oper == '*' or oper == '/': return True else: return False # split expression def mixed_operation(exp): exp_list = list(exp) temp = '' behavor_list = [] i = 0 length = len(exp_list) for item in exp_list: if is_operation(item): behavor_list.append(int(temp)) behavor_list.append(item) temp = '' else: temp += item if i == length - 1: behavor_list.append(int(temp)) break i += 1 return behavor_list # cal a o b 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 # Calculation op1 and op2('*' and '/' or '+' and '-') def cal_op1_op2(exp_list, op1, op2): if len(exp_list) == 1: return exp_list i = 0 has_op = False for i in range(2, len(exp_list), 2): a = exp_list[i - 2] o = exp_list[i - 1] b = exp_list[i] if o == op1 or o == op2: has_op = True exp_list[i - 2] = get_aob(a, o, b) del exp_list[i] del exp_list[i - 1] break if has_op == False: return exp_list return cal_op1_op2(exp_list, op1, op2) # cal exp def cal_exp(exp_list): exp_list = cal_op1_op2(exp_list, '*', '/') exp_list = cal_op1_op2(exp_list, '+', '-') return exp_list[0] # while True: expre = input('Enter your expression(0 to end):') # if expre == '0': # break result = mixed_operation(expre) print('list result = ',result) print(cal_exp(result)) #print ('END')
遗留问题解决方法:
计算器方法里没有判断表达式首字符是运算符情况,加个判断,再使用上计算器方法结合,就能计算合法的最长表达式结果了。
2021-1-2,笔记
内容总结
以上是互联网集市为您收集整理的练习:求字符串中最长的表达式,并计算结果--python实现全部内容,希望文章能够帮你解决练习:求字符串中最长的表达式,并计算结果--python实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。