用python做计算器(超级版)

经过三分钟的思考,高级版计算器被我升级了,变成了更快捷,更简单的超级版

依旧还是我们忠实的sympy库,非常好用。


string附属功能

这次因为一个一个输入数太麻烦了,我就改成 1+1 这种形式了(横版)。主要是应用string的检索,不懂得人可以去官网看看(3. An Informal Introduction to Python — Python 3.9.13 documentation)

主要就是通过对于输入的字符串进行某一段的索取,因为字符串是不允许删减的,所以只有这种办法。

寻找运算符

list_s = ["+", "-", "*", "/", "!", "^", "%"]
function = input()
while(1):if(function[f_search] in list_s):sym = function[f_search]breakelse:f_search += 1

先设置一个list,把所有的运算符放在里面,记住得是string类型的。这里我只放了一部分,并没有都做。然后用一个while循环,不断去找function的运算符的地方,如果找到了,就赋值给一个变量,如果不是运算符,就将f_search加一。这样可以从输入的string变量的第一个字符到最后一个字符去找运算符。

截取第一个数

num1 = function[0:f_search]

因为我是对于运算符前面进行检索,所以第一个是0。0到f_search就可以确保第一个数不会包括运算符,避免之后出问题。这里我不用了if和else就是因为我输入的运算符是!(阶乘)的时候不会出错,具体原因接下来讲。

截取第二个数

length = len(function)gan = 1 + f_searchif(length != (f_search + 1)):num2 = function[gan:length]

这里定义了一个gan变量,也是为了确保截取第二个数的时候不会包括运算符。这里还获取了一下function的长度,如果长度和运算符的一致的话就不进行第二个数的截取了,因为阶乘只要一个数。这里要记住+1,不然length和f_searc永远不会相等。

数过大的问题

try:result = float(num1) ** float(num2)
except OverflowError:print("Result too big.")result = None

用了一个非常简单的try + except组合,overflowerror就是数过大会报错的类型。这样就会避免报错了。

把程序合起来

import sympy
result = 0.0
f_search = 0
x = 0
num1 = ""
num2 = ""
sym = ""
list_s = ["+", "-", "*", "/", "!", "^", "%"]
gan = 0
while(1):function = input()while(1):if(function[f_search] in list_s):sym = function[f_search]breakelse:f_search += 1length = len(function)num1 = function[0:f_search]gan = 1 + f_searchif(length != (f_search + 1)):num2 = function[gan:length]if(function[f_search] == list_s[0]):result = float(num1) + float(num2)elif(function[f_search] == list_s[1]):result = float(num1) - float(num2)elif(function[f_search] == list_s[2]):try:result = float(num1) * float(num2)except OverflowError:print("Result too big.")result = Noneelif(function[f_search] == list_s[3]):result = float(num1) / float(num2)elif(function[f_search] == list_s[4]):result = sympy.factorial(float(num1))elif(function[f_search] == list_s[5]):try:result = float(num1) ** float(num2)except OverflowError:print("Result too big.")result = Noneelif(function[f_search] == list_s[6]):result = float(num1) % float(num2)if(result != None):print(result)else:passf_search = 0result = 0

效果

可以看出这种写的非常方便。

tips

f_search 和result要最后归零,不然下次运算会出bug。

用python做计算器(超级版)相关推荐

  1. 用python做计算器(低级版)

    用python做计算器(低级版) 今天突然找不到电脑上的计算器了,就自己做了一个计算器的程序. 首先,我们先定义一个input的函数 num1 = input ("Enter the fir ...

  2. python 制作自己的新闻_新闻-十行代码,用Python做一个迷你版的美图秀秀

    十行代码,用Python做一个迷你版的美图秀秀 2020-02-28 10:16:08 作者: 匿名 浏览量:65次 美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让 ...

  3. python发音机器人_只需三步,菜鸟也能用Python做一个简易版Siri

    原标题:只需三步,菜鸟也能用Python做一个简易版Siri 当下,各个手机厂商都陆续的推出了属于自己的智能手机机器人,像是苹果的Siri,小米的小爱,还有等等.这些智能机器人不仅仅方便了我们对于手机 ...

  4. 十行代码,我用Python做一个迷你版的美图秀秀!

    美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...

  5. python 两点曲线_十行代码,用Python做一个迷你版的美图秀秀

    美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...

  6. python生日计算器_python版亲戚关系计算器

    春节到了,免不了要去七大姑八大姨家拜年,顺便接受长辈们的关怀.有时偶然遇到许久没见过的远房亲戚,叫不出合适的称谓就尴尬了:或者即便被家人提示了叫法,但依然不知道和自己是什么关系. 于是就有机智的程序员 ...

  7. python做计算器_python实现计算器功能

    本文实例为大家分享了python计算器的具体代码,供大家参考,具体内容如下 主要用到的工具是Python中的Tkinter库 比较简单 直接上图形界面和代码 引用Tkinter库 from tkint ...

  8. python做计算器时常出现的问题及解决办法_正在使用一个基本的python计算器,但无法使菜单正常循环...

    为了提高效率,我会做一些事情..在 选项应该是字典...你的in在字典上比在列表上有效得多.这一点的好处是,每个键的值都可以是函数方法.在 例如options = {1: 'sum', 2: 'sub ...

  9. c语言不用switch做计算器,超级新手,用switch写了个计算器程序,求指导

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我也写过一个....看样子大家都喜欢用 switch()来写计算机 ....百度排版是渣渣!!!!! # include intmain(void){ d ...

  10. 十行代码,用Python做一个迷你版的美图秀秀

    美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...

最新文章

  1. Fabric环境搭建
  2. DHCP中继以及DHCP数据库的备份和还原
  3. 绘图: matplotlib核心剖析
  4. md5withrsa java_浏览器运行java插件报错:Algorithm constraints check failed: MD5withRSA
  5. 動態修改SiteMapPath路徑
  6. 重磅 | Windows 10内部版本及核心源代码泄露,一共32TB
  7. java disp()_【matlab】输出显示函数 sprintf()disp()
  8. acm集训训练赛(二)D题【并查集】
  9. idea 新建spring clound 项目_手把手教你spring源码搭建
  10. python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
  11. 集线器和交换机的区别
  12. 相关性分析及SPSS软件操作
  13. Word 2007书籍排版完全手册
  14. cogs——2098. Asm.Def的病毒
  15. Android Studio设置关闭当前页面的快捷键
  16. XDOJ综合题 数字分解排序
  17. Dojo学习笔记一: 认识Dojo
  18. 编写选股公式、同花顺选股公式编写、编写涨停三阴线超短选股指标公式、编写选股公式...
  19. 如何组装一个注册中心?
  20. Macbook 连wifi后不能使用浏览器,qq,微信等能正常使用

热门文章

  1. C语言编程怎么搜答案,C语言编程题及答案
  2. 电机学、电机拖动相关知识(试着更新电机的相关知识,感谢指出错误)
  3. delphi7IDE技巧
  4. oracle 9i,10G,11G,各版本下载资源(使用迅雷),收集好久,分享上来!
  5. 网络安全05_VMware 虚拟机软件安装_准备Kali- Linux虚拟机_Windows Server 2003 Enterprise 虚拟机下载和安装
  6. VMware Workstation 14 Pro 安装 Windows Server 2003(完)
  7. 2022年PMP培训机构如何挑选?哪家好?
  8. 不用再为机翻头疼!sci论文写作翻译神器推荐
  9. (转)使用XMind打开.mmap文件不显示问题
  10. ajax常用吗,常用ajax请求