Python3实现简单加减乘除运算的计算器

这是用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() or i == '.':
            num01 += i   #判断单个字符,对于连续的数字字符,将会组合在一起,即'789' 变为数字
            count = 0     #出现数字符号,计数器重置为0
        elif i == '*' or i == '/' or i == '+' or i == '-':
            num_list.append(float(num01))
            num01 = ''
            symbol.append(i)
            count += 1 #出现运算符,计数器加1,连续出现,count>1,第一个if条件生效
        else:
            print('输入有误,请重新输入')
            break
    num_list.append(float(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())
请输入公式43.3 * 23 - 43.3* 22
[43.30000000000007]

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

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值