如何用python设计一个计算器程序_如何使用 50 行 Python 代码制作一个计算器
言归正传,现在我们开始编写代码。我们将用一个非常简单的转换器来扫描这棵树。它会从最外面的分支开始扫描,直到到达根节点为止,而我们的工作是告诉它如何扫描。如果一切顺利的话,它将总会从最外层开始扫描!让我们看看具体的实现吧。
>>>importoperator as op
>>>fromplyplusimportSTransformer
classCalc(STransformer):
def_bin_operator(self, exp):
arg1, operator_symbol, arg2=exp.tail
operator_func={'+': op.add,
'-': op.sub,
'*': op.mul,
'/': op.div }[operator_symbol]
returnoperator_func(arg1, arg2)
number =lambdaself, exp:float(exp.tail[0])
neg =lambdaself, exp:-exp.tail[0]
__default__=lambdaself, exp: exp.tail[0]
add=_bin_operator
mul=_bin_operator
每个方法都对应一个规则。如果方法不存在的话,将调用__default__方法。我们在其中省略了start,add_symbol和mul_symbol,因为它们只会返回自己的分支。
我使用了float()来解析数字,这是个懒方法,但我也可以用解析器来实现。
为了使语句整洁,我使用了运算符模块。例如add基本上是 'lambda x,y: x+y'之类的。
OK,现在我们运行这段代码来检查一下结果。
>>> Calc().transform( g.parse('1 + 2 * -(-3+2) / 5.6 + 30'))
31.357142857142858 那么eval()呢?7
>>>eval('1 + 2 * -(-3+2) / 5.6 + 30')
31.357142857142858 成功了:)
如何用python设计一个计算器程序_如何使用 50 行 Python 代码制作一个计算器相关推荐
- 如何制作python代码_如何使用50行Python代码制作一个计算器
(点击上方公号,可快速关注) 作者:Stories For Sad Robots 译者:开源中国社区 链接:http://www.oschina.net/translate/how-to-write- ...
- python怎么做软件程序_如何打包和发布Python程序
如何打包和发布Python程序 在使用Python的过程中,我们经常需要做的一件事情就是通过pip来安装第三方的包.那么你是否也曾想过pip安装的包是怎么被打包并发布上去的呢?今天就来说一说Pytho ...
- python设计查询余额程序_【Python】查询账户余额demo---创蓝253云通讯平台案例
#!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...
- python设计查询余额程序_【Python】短信验证码平台查询账户余额demo---创蓝253云通讯平台案例...
#!/usr/local/bin/python #- - coding:utf-8 -- Author: jacky Time: 14-2-22 下午11:48 Desc: 短信http接口的pyth ...
- python设计编程体验中心_看着漫画学Python是种怎样的体验?编程从此 变得有趣好学...
挖掘每一本书那些"值得被看到"的闪光点 你还在枯燥无味地学编程吗? 你还在闷头背诵那些根本没有理解的内容吗? 根本不用那么煎熬!想不想来体验一下翻着漫画就搞定Python的感觉?? ...
- python监控linux运行程序_如何在linux/tcl/python中监控正在打开或启动的应用程序?...
我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity.在 我的问题是,一旦我用预先定义好的应用程序构建了面板,当应用程序打开或启动时,如何向面板添 ...
- python万年历差农历程序_公历转农历的python实现
1 #lunar.py 2 # 2015/02/27 罗兵 3 importdatetime4 5 classLunar(object):6 #**************************** ...
- python运势预测程序_星座运势查询示例代码
#!/usr/bin/python # encoding:utf-8 import urllib2, json, urllib # 2.星座运势查询 data = {} data["appk ...
- 50行python代码自动生成文章_如何通过50行Python代码获取公众号全部文章
前言 我们平时阅读公众号的文章会遇到一个问题--阅读历史文章体验不好. 我们知道爬取公众号的方式常见的有两种:通过搜狗搜索去获取,缺点是只能获取最新的十条推送文章.通过微信公众号的素材管理,获取公众号 ...
- 50行python游戏代码_使用50行Python代码从零开始实现一个AI平衡小游戏
使用50行Python代码从零开始实现一个AI平衡小游戏 发布时间:2020-10-23 09:26:14 来源:脚本之家 阅读:74 集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何 ...
最新文章
- HDU 6052 To my boyfriend(容斥+单调栈)
- shiro---注解
- 可怕的乖孩子_当今的中国,有句很可怕的话:所有的乖孩子注定不幸福!
- filterreader_Java FilterReader markSupported()方法与示例
- Flutter-Cookbook 非官方翻译
- 微信内测“群直播”;小米发布第三代屏下相机技术;马斯克宣布脑机接口重大突破 | 极客头条...
- 5G 到底是不是伪需求?
- 如何删除“无法读源文件或磁盘”的空头文件
- FPGA基础知识之主要的FPGA生产厂商介绍
- css改火狐滚动条样式_自定义滚动条,可解决火狐滚动条默认样式修改不了问题...
- 帆软获取单元格值与赋值
- javascript 事件练习:封装兼容性添加、删除事件的函数、addEventListener用法
- linux环境下刷机9008,LINUX下线刷修复变砖手机
- 高通ISP流程中,ADRC Gain与GTMLTM的对应关系
- 多场景双师课堂解决方案
- 颜色搭配之BUTTONS 1.0
- 在echarts中圆环图中间 自定义图片引入
- 提升算法数据结构的几个网站
- 需求工程之原型法获取需求
- pp模块常用表 sap_SAPpp模块内表..doc
热门文章
- JDBC操作数据库的问题总结
- The type XXX is not API (restriction on required library 'D:\jdk-64\jre\lib\rt.jar')
- Hello Spark! | Spark,从入门到精通
- img的属性alt 与 title的区别
- 一文读懂质量保证和质量控制
- Process.RedirectStandardInput
- [藏]常用的匹配正则表达式和实例
- 用户、角色、权限管理-设计方案之权限检测
- 二、设置开发、运行环境 (基础教程2)
- Linux音频驱动-OSS和ALSA声音系统简介及其比较