使用列表的方式实现两个大数字相加的操作
思路:
1,把输入的数字转化为列表,
2,比较列表的长度,不够的就在前面补0
3,将两个列表元素逐个相加,得出新的列表
4,如果元素大于等于10,则将这个元素重新赋值为取余10之后的结果,并且将前一个元素加一,
5,将结果输入即可。
示例代码如下:
def my_sum(num1, num2):
# 判断用户输入的字符串是否是数字,如果不是则提示错误信息
if num1.isdigit() and num2.isdigit():
pass
else:
print("您的输入不合法,请重新运行该程序")
return
# 创建列表,用来保存输入的数字
# 这里的列表里必须先放入0,以解决两数相加要创建新的一位的问题,例如 98 + 4 = 102
li1 = [0]
li2 = [0]
# 循环遍历输入的字符串类型的数字,将其转化成int类型,并添加到创建的列表中
for i in num1:
li1.append(int(i))
for i in num2:
li2.append(int(i))
# 判断两个列表的长度,使list1和list2的长度相等,不够的,就补0
if len(li1) > len(li2):
for i in range(len(li2), len(li1)):
li2.insert(0, 0)
else:
for i in range(len(li1), len(li2)):
li1.insert(0, 0)
# 将两个列表中的数据相加合并到li1中
for i in range(len(li1)):
li1[i] = li1[i] + li2[i]
# 循环判断每一个元素的大小,如果大于10,就让原来大于10的数字变成取余之后的数字,使大于10的元素的前一个元素加1,模拟进位制
# 这里的i表示的是li1列表的下标,从最后一个元素起,便遍历到第一个元素(反向遍历),模拟的是十进制的加法从右边(个位)开始相加
for i in range(len(li1)-1, 0-1, -1):
if li1[i] >= 10:
li1[i] = li1[i] % 10
li1[i-1] = li1[i-1] + 1
# 如果数字前面是0,则默认去掉前面的0,例如00456应该输出的是456
# 将列表转化成字符串
string = ""
for i in li1:
string += str(i)
# 把处理过后的结果转成int类型,之后返回, 当string转化成int时,程序会自动删除多余的0,因此在这里不需要执行去掉0的操作
return int(string)
# 程序入口
if __name__ == '__main__':
num1 = input("请输入第一个数字:")
num2 = input("请输入第二个数字:")
result = my_sum(num1, num2)
print(result)