Python简易项目 加减计算器的实现
Python Calculator 1.0
支持功能:add、minus
输入表达式不含括号,允许不加'='
非常简单的一个小计算器,还缺少很多功能,目的是为了练练手。
日后会对其进行更新。
源码
Github:calculator1.0
#!/usr/bin/env python3
"""
Name: Python Calculator 1.0
Support: add minus
Created by Chen. 2017/2/8
"""
def calculator(stack):
s1, s2 = [], []
# handle the stack
for i in stack:
if i == '+' or i == '-' :
s1.append(i)
else :
s2.append(int(i))
s3, s4 = [], []
# turn the list
while len(s1) > 0 :
s3.append(s1[-1])
s1.pop()
while len(s2) > 0 :
s4.append(s2[-1])
s2.pop()
# calculate the result
while len(s3) > 0 :
cal, mid = s3[-1], 0
if cal == '+' :
mid = s4[-1]+s4[-2]
s4.pop()
s4.pop()
s4.append(mid)
elif cal == '-' :
mid = s4[-1]-s4[-2]
s4.pop()
s4.pop()
s4.append(mid)
s3.pop()
return s4[-1]
def main():
print('Python Calculator 1.0')
calstr = input()
mid, s1 = '', []
for i in range(len(calstr)) :
if (calstr[i] == '+' or calstr[i] == '-' or calstr[i] == '=') and i != 0:
if mid != '' :
s1.append(mid)
mid = ''
s1.append(calstr[i])
else :
mid = mid + calstr[i]
if mid != '' :
s1.append(mid)
if s1[-1] == '=' : # delete '='
s1.pop()
res = calculator(s1)
print(res)
if __name__ == '__main__':
main()
2017/2/8
Python简易项目 加减计算器的实现的更多相关文章
- 用python进行月份加减的函数
import math def add_month(datamonth, num): """ 月份加减函数,返回字符串类型 :param datamonth: 时间(20 ...
- Python日期的加减等操作
1. 日期输出格式化 所有日期.时间的api都在datetime模块内. 1. datetime => string now = datetime.datetime.now() now.strf ...
- python获取日期加减之后的日期
python语言中的datetime模块可以利用其中的方法获取不同的日期,比如获取当前日期.明天.昨天.上个月.下个月和明年.下面利用几个实例说明这些日期的获取方法,操作如下: 第一步,利用d ...
- 【python】详解time模块功能asctime、localtime、mktime、sleep、strptime、strftime、time等函数以及时间的加减运算
在Python中,与时间处理相关的模块有:time.datetime以及calendar.学会计算时间,对程序的调优非常重要,可以在程序中狂打时间戳,来具体判断程序中哪一块耗时最多,从而找到程序调优的 ...
- python 简易计算器
import tkinter import tkinter.messagebox import math ''' 波波版计算器可实现的功能 1.能进行简单的加减惩处 2.能进行开根号操作 3.能进行后 ...
- python 简易计算器(只能计算加减乘除和括号)
import re # 格式化字符串函数(消除一些错误的格式) def format_string(string): # 一系列的替换语句 string = string.replace(" ...
- python datetime库使用和时间加减计算
datetime库使用 一.操作当前时间 1.获取当前时间 >>> import datetime >>> print datetime.datetime.now( ...
- python简易计算器
import re """ 过程:(最内部的括号->先乘除,替换->整理表达式->加减)->替换 """ def m ...
- Python开发之【简单计算器】
开发一个简单的python计算器 1.实现加减乘除及括号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * ...
随机推荐
- 转:Java多线程学习(吐血超详细总结)
版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处http://blog.csdn.net/evankaka 目录(?)[+] 林炳文Evankaka原创作品.转载请注明出处http: ...
- Linux上安装Zabbix客户端
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm cp /etc ...
- nginx日志配置(cookie,header,post等字段记录)
如果你对nginx日志格式,有这样那样的要求. 那么就看一下说明吧. $remote_addr The remote host $remote_user The authenticated user ...
- Spark ML Pipeline简介
Spark ML Pipeline基于DataFrame构建了一套High-level API,我们可以使用MLPipeline构建机器学习应用,它能够将一个机器学习应用的多个处理过程组织起来,通过在 ...
- Linux SSH免登录配置总结(转)
转载请出自出处:http://eksliang.iteye.com/blog/2187265 一.原理 我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器Serv ...
- Spring第三弹—–编码剖析Spring管理Bean的原理
先附一下编写的Spring容器的执行结果: 代码如下: 模拟的Spring容器类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- POJ3281:Dining(dinic+拆点)
题目链接:http://poj.org/problem?id=3281 PS:刷够网络流了,先这样吧,之后再刷,慢慢补. 题意:有F种食物,D种饮料,N头奶牛,只能吃某种食物和饮料(而且只能吃特定的一 ...
- HDU1003:Max Sum(简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题意一目了然就不说了,算法是从左往右扫,一个暂时保存结果的值,如果区间结果<0,那么就更改左右 ...
- Python(面向对象5——高级)
面向对象进阶 一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Fo ...
- webpack打包静态资源和动态资源
1.对于静态引用的资源: <img src = "static/modelname/imgname.png"> // 修改为下面的写法 <img src = &q ...