python中不使用eval()完成一个简单的数值运算

python在字符串中不使用eval()完成一个简单的数值运算

数值运算

描述
获得用户输入的一个字符串,格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
M OP N‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
根据OP,输出M OP N的运算结果,统一保存小数点后2位。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
注意:M和OP、OP和N之间可以存在多个空格,不能使用eval(),不考虑输入错误情况。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
输入输出示例
输入 输出
示例1 10 + 100
示例2 1 / 20
示例3 10/99
示例4 -0.1 * 999
示例5 0x99 -0.00001





代码仅供参考,本人小白一个,第一次发,大家不喜勿喷

print("请输入一个类似1+2的计算式:",end="")
wh=input()
#全局变量count用global引用
count=0     #变量count用来记录字符串中运算符的位置,如:3+ 2中count就记录‘+’的位置
def calculate(a,b,wh):
    i=wh[count]
    if i =='+':
        print("{:.2f}".format(a+b)) 
    if i =='-':
        print("{:.2f}".format(a-b))
    if i=='*':
        print("{:.2f}".format(a*b))
    if i=='/':
        print("{:.2f}".format(a/b))
def out_a(wh):
    global count
    xbit=0       #16进制数
    nint=0       #nint小数
    for i in wh:
        if i in ['x','X']:      #判断是否是16进制数
            xbit=1
        if i in ['.']:          #判断是否是小数
            nint=1
        if i in ['+','-','*','/']:
            if count != 0:      #在第一个位置之外找到符号就退出循环,如:-3  +2读第一个'-'时不退出循环
                break
            count=count+1
        else:
            count=count+1
    if xbit==1:
        j=int(wh[0:count],16)
        return j
    if nint==1:
        j=float(wh[0:count])
        return j
    else:
        j=int(wh[0:count])
        return j
def out_b(wh):
    global count       
    xbit=0       #16进制数
    nint=0       #nint小数
    for i in wh[count+1:]:
        if i in ['.']:
                nint=1
        if i in ['x','X']:
                xbit=1
    if xbit==1:
        j=int(wh[count+1:],16)     #count是一个全局变量,我们找到第一个数时count指向式子的运算符,第二个数在它后面,所以wh[count+1:]表示第二个数
        return j
    if nint==1:
        j=float(wh[count+1:])
        return j
    else:
        j=int(wh[count+1:])
        return j
a=out_a(wh)     #获取第一个数
b=out_b(wh)     #获取第二个数
print("a=",a)
print("b=",b)
print("计算结果是:",end="")
calculate(a,b,wh)   #获取结果


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值