这是用Python3编写的一个简易的计算器,只有加减乘除,没有括号。
个人思路:将公式以字符串形式传入:
1、去掉其中的空格,生成新的字符串进行操作;
2、提取其中的数字和运算符号分别生产新的列表;
3、先寻找运算符号列表里的乘除运算符,对数字对应位置的两个相邻数进行运算,再进行加减运算。

\'\'\'用函数编写计算器,要求可以计算多个值的加减乘除
多个值的加减乘除\'\'\'

def caculator():
    formula00 = input(\'请输入公式\')
    formula01 = \'\'             #去除其中的空格
    for i in formula00:
        if i.isspace():
            pass
        else:
            formula01 += i
    num01 = \'\'
    num_list = []             #用来存储单独数字
    symbol = []               #用来存储运算符号
    count = 0                 #计数器,判断是否连续出现运算符
    for i in str(formula01):
        if count > 1:
            print(\'输入有误,请重新输入\')
            break
        elif i.isdigit():
            num01 += i       #判断单个字符,对于连续的数字字符,将会组合在一起,即\'789\' 变为整数型
            count = 0          #出现数字符号,计数器重置为0
        elif i == \'*\' or i == \'/\' or i == \'+\' or i == \'-\':
            num_list.append(int(num01))
            num01 = \'\'
            symbol.append(i)
            count += 1        #出现运算符,计数器加1,连续出现,count>1,第一个if条件生效
        else:
            print(\'输入有误,请重新输入\')
            break
    num_list.append(int(num01))     #在公式最后不会出现运算符,所以需要将最后一个存入列表

    #对num_list和symbol两个列表进行处理,进行运算
    while symbol:
        while \"*\" in symbol or \"/\" in symbol: #先寻找*和/运算
            for i in symbol:
                if i == \"*\":
                    #找到运算符对应位置的symbol列表下标,对num_list里面对应位置的两个相邻数据进行运算,并用结果覆盖原数据
                    #同时删除symbol列表里的运算符
                    j = symbol.index(\"*\")
                    result = num_list[j] * num_list[j+1]
                    del num_list[j:j+2]
                    num_list.insert(j,result)
                    symbol.remove(\"*\")
                    break
                if i == \"/\":
                    j = symbol.index(\"/\")
                    result = num_list[j] / num_list[j + 1]
                    del num_list[j:j + 2]
                    num_list.insert(j, result)
                    symbol.remove(\"/\")
                    break

        while \"+\" in symbol or \"-\" in symbol:
            for i in symbol:
                if i == \"+\":
                    j = symbol.index(\"+\")
                    result = num_list[j] + num_list[j+1]
                    del num_list[j:j + 2]
                    num_list.insert(j, result)
                    symbol.remove(\"+\")
                    break
                if i == \"-\":
                    j = symbol.index(\"-\")
                    result = num_list[j] - num_list[j + 1]
                    del num_list[j:j + 2]
                    num_list.insert(j, result)
                    symbol.remove(\"-\")
                    break
    return num_list
print(caculator())

初学者用的用的基础的知识,不足之处请指正,谢谢!!(后续会更新)

收藏 打印