v1.0 计算器(数据内不含括号方式:)

  1. import re
  2.  
  3. def jisuan(a,b,c):
  4. sun_count = 0
  5. if c =="+":
  6. sun_count = str(float(a[b.index(c)]) + float(a[b.index(c) + 1]))
  7. elif c =="-":
  8. sun_count = str(float(a[b.index(c)]) - float(a[b.index(c) + 1]))
  9. elif c == "*":
  10. sun_count = str(float(a[b.index(c)]) * float(a[b.index(c) + 1]))
  11. elif c == "/":
  12. sun_count = str(float(a[b.index(c)]) / float(a[b.index(c) + 1]))
  13. a.remove(a[b.index(c)])
  14. a.remove(a[b.index(c)])
  15. a.insert(b.index(c), sun_count)
  16. b.remove(b[b.index(c)])
  17.  
  18. #测试数据:
  19. # '100.5+4*5/2-3*2*2/4+9'
  20. # '100.5+4/2-3*9*2-4+9'
  21. # '10+15/5+2-9*2-100'
  22. # '1+2+3+4+5+6+7+8+9'
  23. # '100-1-3-5-6-7-8-77-6-5'
  24. # '3*6*7*9*34*45*99'
  25.  
  26. n='100.5+4/2-3*9*2-4+9'
  27. n2 = eval(n)
  28. print("eval函数执行结果:",n2)
  29.  
  30. a = re.findall(r"\d+\.\d+|\d+",n)
  31. b = re.findall(r"[+|\-|\*|\/]",n)
  32. # print(a)
  33. # print(b)
  34.  
  35. while b:
  36. if '*'in b or '/'in b:
  37. for i in b:
  38. if i == '*':
  39. jisuan(a,b,"*")
  40. elif i == "/":
  41. jisuan(a, b, "/")
  42. else:
  43. if b[0] == "+":
  44. jisuan(a, b, "+")
  45. elif b[0] == '-':
  46. jisuan(a, b, "-")
  47.  
  48. print("程序执行结果:",a[0])

v2.0  计算器

  1. import re
  2.  
  3. def jisuan(a,b,c):
  4. sun_count = 0
  5. if c =="+":
  6. sun_count = str(float(a[b.index(c)]) + float(a[b.index(c) + 1]))
  7. elif c =="-":
  8. sun_count = str(float(a[b.index(c)]) - float(a[b.index(c) + 1]))
  9. elif c == "*":
  10. sun_count = str(float(a[b.index(c)]) * float(a[b.index(c) + 1]))
  11. elif c == "/":
  12. sun_count = str(float(a[b.index(c)]) / float(a[b.index(c) + 1]))
  13. a.remove(a[b.index(c)])
  14. a.remove(a[b.index(c)])
  15. a.insert(b.index(c), sun_count)
  16. b.remove(b[b.index(c)])
  17.  
  18. def xunhuan(a,b):
  19. while b:
  20. if '*' in b or '/' in b:
  21. for i in b:
  22. if i == '*':
  23. jisuan(a, b, "*")
  24. elif i == "/":
  25. jisuan(a, b, "/")
  26. else:
  27. if b[0] == "+":
  28. jisuan(a, b, "+")
  29. elif b[0] == '-':
  30. jisuan(a, b, "-")
  31.  
  32. #测试数据:
  33. # '100.5+4*5/2-3*2*2/4+9'
  34. # '100.5+4/2-3*9*2-4+9'
  35. # '10+15/5+2-9*2-100'
  36. # '1+2+3+4+5+6+7+8+9'
  37. # '100-1-3-5-6-7-8-77-6-5'
  38. # '3*6*7*9*34*45*99'
  39. # '1-2*((60-30+(40/5+3)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(4*3)/(16-3*2))'
  40. # '1-2*(60-30+(40/5+3))'
  41. # '1-2*(60-30+(40/5+3)+(9+22))'
  42. # '3*(4+50)-(3*2*2/4+9)*(((3+4)-4))'
  43. # '3*(4+50)-((100+40)*5/2-3*2*2/4+9)*(((3+4)-4))'
  44.  
  45. n='1-2*(60-30+(40/5+3)+(9+22))'
  46. # print(n)
  47. while 1:
  48. if "("in n or ")" in n:
  49. kh = re.search(r"\([^(]([\d+\.\d|\-\d+\.\d+|\-|\*|\/]+)[^)]\)",n)
  50. # print(kh.group())
  51. if kh.group():
  52. a = re.findall(r"\d+\.\d+|\d+",kh.group())
  53. b = re.findall(r"[+|\-|\*|\/]",kh.group())
  54. # print(a)
  55. # print(b)
  56. xunhuan(a,b)
  57. # print(a[0])
  58. sou = re.compile(r"\([^(]([\d+\.\d|\-\d+\.\d+|\-|\*|\/]+)[^)]\)")
  59. n = n.replace(kh.group(),str(a[0]))
  60. # print(n)
  61. # print("-"*40)
  62. else:
  63. a = re.findall(r"\d+\.\d+|\d+", n)
  64. b = re.findall(r"[+|\-|\*|\/]", n)
  65. xunhuan(a, b)
  66. print("程序执行结果:",a[0])
  67. break
  68. n2 = eval(n)
  69. print("eval函数执行结果:",n2)

python - 计算器 程序练习的更多相关文章

  1. 7_python之路之python计算器

    7_python之路之python计算器 1.程序说明:Readme.cmd 1.程序文件及说明: calculator.py 2.python版本:python-3.5.3 3.程序使用:pytho ...

  2. Github Python计算器开源项目 二次开发--增加函数图形

    先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...

  3. 运行easy_install安装python相关程序时提示failed to create process

    运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...

  4. Apache运行python cgi程序

    Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...

  5. python 计算器的(正则匹配+递归)

    经过2天的长时间的战斗,python计算器终于完成了. import re val="1-2*((60-30*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3 ...

  6. 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB

    对单复利计算器程序进行改进 更新为网页版的. 界面不太美观 请谅解 由于时间问题暂未完善好! 计算部分的主要源代码:

  7. 纯javascript代码编写计算器程序

    今天来分享一下用纯javascript代码编写的一个计算器程序,很多行业都能用到这个程序,例如做装修预算.贷款利率等等. 首先来看一下完成后的效果: 具体代码如下:(关注我的博客,及时获取最新WEB前 ...

  8. python 整型--《Python 3程序开发指南》笔记

    参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生 ...

  9. python爬虫程序

    http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!

随机推荐

  1. BZOJ2803[Poi2012]Prefixuffix——hash

    题目描述 对于两个串S1.S2,如果能够将S1的一个后缀移动到开头后变成S2,就称S1和S2循环相同.例如串ababba和串abbaab是循环相同的.给出一个长度为n的串S,求满足下面条件的最大的L: ...

  2. ajax 提交数组 泛型集合(二)

    最近在项目中,使用 mvc架构,model层使用code first 碰见一个问题,前台json传递数据给后台action的复杂对象,发现复杂对象中的list范型集合并没有获取到数据. 研究半天,终于 ...

  3. 自学Zabbix4.2 web监控项创建+item详解

    自学Zabbix4.2 web监控项创建+item详解 1. web监控项创建 1.1  Scenario 选项卡 Name: 监控项的名称 Application: 放到哪个应用中 Authenti ...

  4. java匹配竖线的错误警示

    String s1 = "|"; // 输出 | System.out.println(s1); String s2 = s1.replaceAll("|",& ...

  5. luogu P2181 对角线

    题目大意: 给一个n边形,求出在所有任意三条对角线都不相交于同一个点的情况下,交点个数是多少.(即交点个数最多是多少) 分析: 题目很水,但是公式不好想. 由于任意三条对角线不会交于一点,所以所有的交 ...

  6. 由asp的一个错误,看语言的不同:asp & java

    今天查看网页源代码,无意发现源代码尾部抛出asp的错误信息,但没有显示在网页上. 如果没查看源代码,还没发现asp运行代码出错了. 大致情况是这样,在asp中,有一个变量来表示用户当前使用的容量,注意 ...

  7. 初探ant-design(web版本二)

    Dropdown下拉菜单 向下弹出的列表. 何时使用# 当页面上的操作命令过多时,用此组件可以收纳操作元素.点击或移入触点,会出现一个下拉菜单.可在列表中进行选择,并执行相应的命令. 最简单的下拉菜单 ...

  8. MySQL中双NDBD节点Cluster快速配置

    是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.在MyQL 5.0及以上的二进制版本中.以及与最 ...

  9. GO语言的进阶之路-网络安全之proxy

    GO语言的进阶之路-网络安全之proxy 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在党的带领下,我们大陆的孩子身心健康还是杠杠的,尤其是像我这种农村孩纸,从来不会像<人 ...

  10. 函数和常用模块【day06】:re模块(九)

    本节内容 1.简述 2.常用的正则表达式符号 3.常用匹配方法 4.常用方法 5.反斜杠的困扰 6.其他匹配模式 7.总结 一.简述 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程 ...