Python四则运算
思路:输入一串表达式,比如20✳35=,然后运算出结果20✳35= 700。
将整个表达式看成一个字符串,首先判断含有哪种运算符号,然后调用相应的方法。
通过遍历得到运算符号前边的数字的个数,方便后续的数据类型转换。
然后同样方法转换符号后边的数字。
最后执行加法或者减法。
缺点:只能进行一次运算,如果输入连加连乘,就报错。后续使用正则表达式进行过滤,应该可以实现。
#-*- coding: utf-8 -*-
def add(choice,count):
for i in choice:
if i == "+":
choice = choice.replace("+","")
break
count = count + 1 # 得到+符号前的数字个数
num1 = choice[0]
for j in range(1,count):
num1 = num1+choice[j] # 将+号前的数字拼接好
num1 = int(num1) # 将字符串强制类型转换为int型
num2 = choice[count]
for k in range(count+1,length-1):
num2 = num2+choice[k] # 将+号前的数字拼接好
num2 = int(num2) # 将字符串强制类型转换为int型
print("%d+%d=%d" %(num1,num2,num1+num2))
def subtract(choice,count):
for i in choice:
if i == "-":
choice = choice.replace("-","")
break
count = count + 1 # 得到+符号前的数字个数
num1 = choice[0]
for j in range(1,count):
num1 = num1+choice[j] # 将+号前的数字拼接好
num1 = int(num1) # 将字符串强制类型转换为int型
num2 = choice[count]
for k in range(count+1,length-1):
num2 = num2+choice[k] # 将+号前的数字拼接好
num2 = int(num2) # 将字符串强制类型转换为int型
print("%d-%d=%d" %(num1,num2,num1-num2))
def multiply(choice,count):
for i in choice:
if i == "*":
choice = choice.replace("*","")
break
count = count + 1 # 得到+符号前的数字个数
num1 = choice[0]
for j in range(1,count):
num1 = num1+choice[j] # 将+号前的数字拼接好
num1 = int(num1) # 将字符串强制类型转换为int型
num2 = choice[count]
for k in range(count+1,length-1):
num2 = num2+choice[k] # 将+号前的数字拼接好
num2 = int(num2) # 将字符串强制类型转换为int型
print("%d*%d=%d" %(num1,num2,num1*num2))
def divide(choice,count):
for i in choice:
if i == "/":
choice = choice.replace("/","")
break
count = count + 1 # 得到+符号前的数字个数
num1 = choice[0]
for j in range(1,count):
num1 = num1+choice[j] # 将+号前的数字拼接好
num1 = int(num1) # 将字符串强制类型转换为int型
num2 = choice[count]
for k in range(count+1,length-1):
num2 = num2+choice[k] # 将+号前的数字拼接好
num2 = int(num2) # 将字符串强制类型转换为int型
print("%d/%d=%d" %(num1,num2,num1/num2))
count = 0
choice = input("请输入运算式:")
length = len(choice)
if( "+" in choice):
add(choice,count)
if( "-" in choice):
subtract(choice,count)
if( "*" in choice):
multiply(choice,count)
if( "/" in choice):
divide(choice,count)