#计算和 返回和本身,和的十位数,和的个位数
def sum(x,y,z):
a = x+y+z
return a,a//10,a%10
#比较两个数组是否长度一样,若不一样在短的数组前面补零,最后返回补零后的数组
def compare(e1:list,e2:list):
if len(e1)>=len(e2):
for i in range(len(e1)-len(e2)):
e2.insert(0,0)
if len(e1)<=len(e2):
for i in range(len(e2)-len(e1)):
e1.insert(0,0)
return e1,e2
#封装成函数
def add(o1,o2):
#判断数组长度是否一致,若一致输出原数组,若不一致输出补零后的数组
a,b = compare(o1,o2)
#声明列表c用于存储o1与o2的和
c = []
#首先定义十位数为0
ten = 0
for i in range(1, len(a) + 1):
#列表中第-i位相加,返回和,和的十位数部分,和的个位数部分
s, ten, sigle = sum(a[-i], b[-i], ten)
#判断是否为最后一位,这一步思考加法相加原则
if i == len(a):
c.append(a[-i] + b[-i] + ten)
else:
c.append(sigle)
# 翻转c
c = c[::-1]
return c
#测试
a = [8,7,6]
b = [1,2,3,4,5]
print(add(a,b))
|