如何在Python中编写以下脚本?

时间:2014-06-22 17:08:37

标签: python-3.x

所以我想编写的程序是添加两个由int组成的字符串S1和S2。 例如:S1 =' 129782004977',S2 =' 754022234930',SUM =' 883804239907' 到目前为止,我已经做到了这一点,但它仍然存在问题,因为它并没有让我整个SUM。

def addS1S2(S1,S2):
    N=abs(len(S2)-len(S1))
    if len(S1)<len(S2):
        S1=N*'0'+S1
    if len(S2)<len(S1):
        S2=N*'0'+S2
    #the first part was to make the two strings with the same len.
    S=''
    r=0
    for i in range(len(S1)-1,-1,-1):
        s=int(S1[i])+int(S2[i])+r
        if s>9:
            r=1
            S=str(10-s)+S
        if s<9:
            r=0
            S=str(s)+S
            print(S)

        if r==1:
            S=str(r)+S

    return S

1 个答案:

答案 0 :(得分:1)

这似乎是家庭作业,所以我不会提供完整的代码,只是一些指示。

您的算法存在三个问题。如果你修复它们,那么它应该可以工作。

  1. 10-s会给你负数,因此所有这些-都会在总和中出现。将其更改为s-10
  2. 您缺少所有9个。将if s<9:更改为if s<=9:,甚至更好,只需else:
  3. 您不应该在每次迭代中将r添加到字符串中,而应该在循环之后的最后添加。
  4. 此外,不是使用那些复杂的if语句来检查r并从s中减去10,您只需使用除法和模数:r = s/10和{{1 },或只是s = s%10

    如果这是作业:只需使用r, s = divmod(s, 10)