新手学完函数初识后写的函数计算器(没有括号的四则运算,带括号的后面有时间再写)

#写在前面:如果我们做一个函数计算器还是准备输入第一个数、运算符号、第二个数、运算符号、第三个数、运算符号。。。最后用函数写一个if判断符号,再拼接成计算式的话
#就显得繁琐,且不好(nao),另外人们生活中用计算器算计算式的时候也不是按一行行的提示一个个输入的,都是直接输入一个计算式,按等于号就直接出来结果的
#我这个程序开始的想法就是尽量往生活中用计算器的体验上靠拢,面临的问题就有:1.怎么输入计算式(字符串)后能通过赋值运算出来结果;你可能会想赋值运算时去掉字符串的引号不就行了,
#其实这个稍微想想就知道是不行的;2.然后就考虑把计算式拆成单个字符串,把数字型字符串转成数型,函数定义运算法则,通过循环遍历拆后的字符串,但是要注意有乘除运算时
#要先算乘除,而遍历是从左往右遍历,这时候就需要调整纠正
#想法不复杂,但是想到这些不容易,实践起来许多细节很头疼,这个程序只能计算没有括号的四则运算,能运算括号版的等有时间再鼓捣了
a=input('请输入计算式')
l1=[]
l1.extend(a) #将计算式分割成单个字符串

b=int(l1[0])
c=-1
d=0

def cal(i):   #定义函数
    global b   #全局变量
    global d   #全局变量


    if c<len(l1)-1:   #第一个if避免下面l1[c+1]没有这个值而报错
        if i =='+':
            b=b+int(l1[c+1])
            d=-int(l1[c+1])   #当下一个运算涉及乘除后纠正用值
        elif i=='-':
            b=b-int(l1[c+1])
            d =int(l1[c+1])   #当下一个运算涉及乘除后纠正用值
        elif i == '*' :
            if c==1:   #当第一个运算不是加减法时的情况
                b=int(l1[c-1])* int(l1[c+1])
            else:
                b = b+d +int(l1[c-1])* int(l1[c+1])

        elif i == '/':
            if c == 1 :   #当第一个运算不是加减法时的情况
                b = int( l1[c - 1] ) / int( l1[c + 1] )
            else :
                b = b+d +int(l1[c-1])/ int(l1[c+1])

        else:   #遇到数字直接跳过
            pass
    else:
        pass

for j in l1:   #遍历计算式拆散后的每一个元素
    #c = l1.index( j )  # 查询元素j的索引   #不能使用index,因为遇到重复元素就惨了
    c+=1
    cal(j)


print(b)   #打印结果

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值