[Python Study Notes]计算器

Posted liu66blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python Study Notes]计算器相关的知识,希望对你有一定的参考价值。

# -------------------------------------------------------------------------------------
# @文件: 计算器.py
# @工程: blog
# @时间: 2018/3/17 20:14
# @作者: liu yang
# @博客: www.liuyang1.club
# @邮箱: [email protected]
# ------------------------------------------------------------------------------------
# 编码格式
# -*- coding: utf-8 -*-
# Python版本
# #!/usr/bin/python3
import re

exprs = ‘‘    # 表达式
sum = 0       # 结果
flag = ‘new‘  # 计算标志位


def License():
    print("             **********控制台计算器***********\n             ·支持+-×/运算,指数运算(^),\n             ·支持包含括号的长表达式输入\n             ·欢迎访问博客:www.liuyang1.club \n              ********CopyRight(c) 2018 ********\n             ")


def BracketUnbalanceCheck(str_in):
    num = 0
    for i in str_in:
        if i == ‘(‘:
            num += 1
        elif i == ‘)‘:
            num -= 1
    if num != 0:  # 括号不平衡
        print("错误:输入的括号不平衡,请重新输入\n")
        return 1
    else:  # 括号平衡
        return -1


def CharErrorCheck(str_in):
    if re.findall(r‘[&a-zA-Z<>,[email protected]#$%";:]‘, str_in):  # 正则表达式校验输入字符串的合法性
        print(‘错误:表达式包含非法字符,请重新输入\n‘)
        return 1
    else:
        return -1


def InputExpression():
    global exprs
    while not (CharErrorCheck(exprs) == -1 and BracketUnbalanceCheck(exprs) == -1):  # 直到得到一个合法的表达式
        exprs = input("继续输入表达式:\n")
    m = re.match(r‘^[\^/\*+\-\\]\w*‘, exprs)  # 匹配输入字符串的第一个字符是否是运算符,判断继续运算还是开始新计算
    if m:
        return ‘continue‘
    else:
        return ‘new‘


def Compute(flag):
    global exprs
    global sum
    exprs = exprs.replace(‘^‘, ‘**‘)  # 将^替换为**
    if flag == ‘continue‘:
        exprs = str(sum) + exprs
    try:
        sum = eval(exprs)
        print("计算式:", exprs)
        print(exprs, "= " + str(sum))
    except SyntaxError:
        print("错误:继续计算时出现语法错误,程序返回\n")
    except ZeroDivisionError:
        print("错误:除数不能为0,程序返回\n")


def main():
    global exprs, flag
    License()
    while True:
        exprs = input("输入表达式:")
        flag = InputExpression()
        Compute(flag)


if __name__ == ‘__main__‘:
    main()

以上是关于[Python Study Notes]计算器的主要内容,如果未能解决你的问题,请参考以下文章

[Python Study Notes]计算cpu使用率v0.1

[Python Study Notes]with的使用

[Python Study Notes]批量将wold转换为pdf

[Python Study Notes]电池信息

[Python Study Notes]内存信息

[Python Study Notes]cpu信息