Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python上使用算法(而不是标准计算)添加大量数字_Python_Algorithm - Fatal编程技术网

在python上使用算法(而不是标准计算)添加大量数字

在python上使用算法(而不是标准计算)添加大量数字,python,algorithm,Python,Algorithm,我的老师给了我一个家庭作业,让我做一个python程序,该程序使用标准的加法算法来添加大量的数字。(我知道Python3.x本身可以添加大量数字,但我需要添加的方法) 以下是标准算法的一个示例: 我试着做一个程序,但我做不到。 我没有从StackOverflow中找到任何让我满意的答案。 这是我的四轮马车,但不是完全的尝试,只能添加相同房间的数字(例如12和45、444和765,而不是1和134) 另外,我是Python初学者,任何帮助都将不胜感激。您只需在m的开头添加零,您的代码也将正常工作,

我的老师给了我一个家庭作业,让我做一个python程序,该程序使用标准的加法算法来添加大量的数字。(我知道Python3.x本身可以添加大量数字,但我需要添加的方法)

以下是标准算法的一个示例:

我试着做一个程序,但我做不到。 我没有从StackOverflow中找到任何让我满意的答案。 这是我的四轮马车,但不是完全的尝试,只能添加相同房间的数字(例如12和45、444和765,而不是1和134)


另外,我是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(原始输入(…),因为原始输入已经是字符串了