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 * ...
随机推荐
- 在VMWare的虚拟机中设置共享文件夹(Linux-Ubuntu系统)
1.点击菜单中的虚拟机---设置---选项---共享文件夹,选择总是开启: 2.添加主机共享的文件夹: 3.安装vmware tools: (1)打开虚拟机---安装vmware tools: (2) ...
- sublime text 3 配置方法
一.安装sublime text 3 1>.执行sublime text 3的安装包(.exe)文件安装成功后,进入sublime的安装目录(例如:D:\Program Files\Sublim ...
- 病毒侵袭---hdu2896(AC自动机)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896 输入的字符是所有可见的ASCII码(共有127个)所以要注意一下: 把结果存到一个数组中,然后输 ...
- 解决MySQL ERROR 1130 (HY000): Host '192.168.31.115' is not allowed to connect to this MariaDB server
# 给root用户授权 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.31.115' IDENTIFIED BY 'root' WITH GRANT O ...
- python中的抽象方法
python中的抽象方法 父类要限制1.子类必须有父类的方法2.子类实现的方法必须跟父类的方法的名字一样 import abc class A(metaclass=abc.ABCMeta): @abc ...
- 图文讲解zabbix安装全过程(5)
在了解<zabbix硬件.软件需求>之后,在你心里应该有备选的机器.今天开始安装zabbix.zabbix需要LNMP或者LAMP环境.环境的搭建不在本章范围内. LNMP环境配置Linu ...
- media query媒体查询
媒体查询(CSS3 media query) 一.逻辑操作符:not.and.only not:not操作符用来对一条媒体查询的结果取反. and:and操作符用来把多个媒体属性组合起来,合并到同一条 ...
- 搭建virtualenv
一.前言 1.什么是virtualenv? 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目 ...
- 浅析selenium的PageFactory模式 PageFactory初始化pageobject
1.首先介绍FindBy类: For example, these two annotations point to the same element: @FindBy(id = "foob ...
- 【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改
Sqlite的应用场景 在判断是否使用存储格式为Sqlite模式的标准,我们的标准是内容只读.也就是说,除非发布者修改Sqlite内容,玩家只有读取的权限. 换个角度说,Sqlite里面的数据都是游戏 ...