在python上使用算法(而不是标准计算)添加大量数字
我的老师给了我一个家庭作业,让我做一个python程序,该程序使用标准的加法算法来添加大量的数字。(我知道Python3.x本身可以添加大量数字,但我需要添加的方法) 以下是标准算法的一个示例: 我试着做一个程序,但我做不到。 我没有从StackOverflow中找到任何让我满意的答案。 这是我的四轮马车,但不是完全的尝试,只能添加相同房间的数字(例如12和45、444和765,而不是1和134)在python上使用算法(而不是标准计算)添加大量数字,python,algorithm,Python,Algorithm,我的老师给了我一个家庭作业,让我做一个python程序,该程序使用标准的加法算法来添加大量的数字。(我知道Python3.x本身可以添加大量数字,但我需要添加的方法) 以下是标准算法的一个示例: 我试着做一个程序,但我做不到。 我没有从StackOverflow中找到任何让我满意的答案。 这是我的四轮马车,但不是完全的尝试,只能添加相同房间的数字(例如12和45、444和765,而不是1和134) 另外,我是Python初学者,任何帮助都将不胜感激。您只需在m的开头添加零,您的代码也将正常工作,
另外,我是Python初学者,任何帮助都将不胜感激。您只需在
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])
您只需在
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])
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
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
在python中,交换可以简单地写成
a,b=b,a
。仅供参考。你的程序有什么问题?你得到的答案是错误的还是错误的?不管怎样,它是什么?还有,为什么要使用浮点-你的程序需要处理像“1.23”这样的用户输入吗?我也想添加浮点。在python中,它显示为3.6e+13,而不是36.111.25。我的程序是用来计算大数的,比如55555555555555+4444444444,而不使用python的标准方法。浮点数对这一点没有帮助,因为它们的存储方式——它们不是存储大数的灵丹妙药(如果是的话,你就不能执行float(m)+float(n)
?)在python中,交换可以简单地写成a,b=b,a
。仅供参考。你的程序有什么问题?你得到的答案是错误的还是错误的?不管怎样,它是什么?还有,为什么要使用浮点-你的程序需要处理像“1.23”这样的用户输入吗?我也想添加浮点。在python中,它显示为3.6e+13,而不是36.111.25。我的程序是用来计算大数的,比如55555555555555+4444444444,而不使用python的标准方法。浮点数对这一点没有帮助,因为它们的存储方式——它们不是存储大数的灵丹妙药(如果是的话,你就不能执行float(m)+float(n)
?)它可以用来计算浮动吗?它在它们上显示了一个错误是的,但逻辑将不同。将浮点视为两个数字相加,然后放置。完成计算后,还要计算进位。大小写不应该附加到结果中,而是用于在符号之前添加数字。原始代码不适用于浮点数,因为可以,我自己会尝试。再次感谢您的回答。这并不完美,例如,它在9+18中失败。另外,也不需要str(raw_input(…),因为raw_input是一个字符串,可以用来计算浮点吗?它在它们上显示了一个错误是的,但逻辑将不同。将浮点视为两个数字相加,然后放置。完成计算后,还要计算进位。大小写不应该附加到结果中,而是用于在符号之前添加数字。原始代码不适用于浮点数,因为可以,我自己会尝试。再次感谢您的回答。这并不完美,例如,它在9+18中失败。另外,也不需要str(原始输入(…),因为原始输入已经是字符串了