用Python实现小学生四则运算

https://github.com/qingyuzz?tab=projects

一、需求分析

根据小学学的四则元算法则,对输入的字符串实现比较大小,加法,减法,乘法,除法和求余等运算。

二、实现环境

本程序是在Python3.7、pycharm下实现

二、代码

class StringArithmetic:
# 输入的x,y皆为非负

# 比较大小 x>y retuen 1,x==y return 0, x<y resurn -1
def Compare(self,x,y):
m=len(x)
n=len(y)
if m>n:
return 1
if m<n:
return -1
for i in range(m):
if x[i]>y[i]:
return 1
if x[i]<y[i]:
return -1
return 0
#加法运算
def Add(self,x,y):
result=''
rise=0
maxlen=max(len(x),len(y))
x=x.zfill(maxlen)
y=y.zfill(maxlen)
for i in range(1,maxlen+1):
temp=int(x[-i])+int(y[-i])+rise
if temp>9:
rise=1
temp=temp-10
else:
rise=0
result+=str(temp)
if rise>0:
result+=str(rise)
return result[::-1]

# 减法运算 x>=y, resurn x-y
def Minus(self,x,y):
result=''
own=0
for i in range(1,len(y)+1):
first=int(x[-i])-own
second=int(y[-i])
if first<second:
own=1
first+=10
else:
own=0
result+=str(first-second)
result=result.rstrip('0')
if result=='':
result='0'
return result[::-1]

# Condition: return k times of x, limit k to stop temp over limit
def SigleMultiple(self,k,x):
result=''
rise=0
k=int(k)
for i in range(1,len(x)+1):
temp=int(x[-i])*k+rise
result+=str(temp%10)
rise=temp//10
result=result[::-1]
if rise>0:
result=str(rise)+result
return result

# return x*y
def Multiple(self,x,y):
if len(x)<len(y):
x,y=y,x
result='0'
zright=''
for i in range(1,len(y)+1):
temp=self.SigleMultiple(y[-i],x)+zright
result=self.Add(result,temp)
zright+='0'
return result

# x=ky+b, return k+' '+b
def Recount(self,x,y):
m=len(x)
n=len(y)
s=n-1
k=''
b=x[0:s]
for i in range(s,m):
b+=x[i]
temp=self.SingleRecount(b,y)
k+=temp[0]
b=temp[1]
if len(k)==0:
k='0'
return k,b

# x=ky+b, return k,b by loop. faster for k is smaller
def SingleRecount(self,x,y):
k=0
while True:
temp=self.SigleMultiple(k,y)
i=self.Compare(x,temp)
if i==1:
k+=1
continue
if i==0:
return str(k),'0'
if i==-1:
break
temp=self.Minus(x,self.SigleMultiple(k-1,y))
return str(k-1),temp

s=StringArithmetic()
x='15'
y='15'
result=s.SigleMultiple(x,y)
result1=s.Add(x,y)
print(result)
print(result1)
result2=s.SingleRecount(x,y)
print(result2)
result3=s.Minus(x,y)
print(result3)

三、程序结果

四、PSP表格

 


由于本人刚学Python不久,有参考大家的程序代码,在此声明

转载于:https://www.cnblogs.com/smalltree/p/10568420.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值