我的老师给了我一个功课来做一个python程序,它增加了大量的数字,并使用标准的添加算法。 (我知道Python 3.x本身可以添加大数字,但我需要添加的方式)
以下是标准算法的示例:How to Add Large Numbers Using Column Addition
我试过做一个程序但是,我做不到。 我没有从StackOverflow找到满足我的任何答案。 这是我的马车,而不是完整的尝试,只能添加相同房间的数字(例如12和45,444和765,而不是1和134)。
n=str(raw_input("n:"))
m=str(raw_input("m:"))
k=0
res=''
if m>n:
m,n=n,m
k=0
for i in range(len(n)-1,-1,-1):
a=float(n[i])
try:
b=float(m[i])
except:
b=float(0)
k=float(k)
res+=str(int((a+b+k)%10))
if a+b+k>9:
k=1
else:
k=0
print(res[::-1])
P.S。我是Python的初学者,非常感谢任何帮助。
答案 0 :(得分:1)
您可以在m
的开头添加零,并且您的代码也能正常工作,因为您要添加整数,应使用int()
而不是float()
并且你需要在for循环之后将进位添加到结果中检查此代码
n=raw_input("n:")
m=raw_input("m:")
k=0
res=''
if len(m)>len(n):
n,m = m,n #this will swap
k=0
m = "0" * (len(n)-len(m)) + m #append zeroes to m at the begining
for i in range(len(n)-1,-1,-1):
a=int(n[i])
b = int(m[i])
k=int(k)
res+=str(int((a+b+k)%10))
if a+b+k>9:
k=1
else:
k=0
#add the remainder
if (k !=0) :
res += str(k)
print(res[::-1])
答案 1 :(得分:1)
Python有izip_longest
- 函数,以填补缺少的0
s:
from itertools import izip_longest
n = raw_input("n:")
m = raw_input("m:")
k = 0
res = ''
for a, b in izip_longest(reversed(n), reversed(m), fillvalue='0'):
k, z = divmod(int(a)+int(b)+k, 10)
res = str(z) + res
if k:
res = str(k) + res
print res