Python 3.3.2 - 计算数字的携带

时间:2013-08-31 01:01:37

标签: python-3.x addition

还记得回到小学你学习携带数字吗?

示例:

  123
+ 127
-------
  250

您将3+7的1带到下一列,并将第一列更改为0?

无论如何,我得到的是我想制作一个程序来计算2个数字所生成的携带的数量(加法)。

我这样做的方式是,我将两个数字转换为字符串,将它们分成个体,然后将它们转换为整数。在那之后,我一次添加1,当一个数字是2位数时,我将把它取下10并移动到下一列,按照我去的方式计算。 / p>

问题是,我几乎不知道该怎么做,而且听起来也很慢 到目前为止,这是我的代码。

numberOne = input('Number: ')
numberTwo = input('Number: ')
listOne = [int(i) for i in str(numberOne)]
listTwo = [int(i) for i in str(numberTwo)]

然后......我不知道该怎么做。有人可以帮忙吗?

编辑:
一些澄清。
这也适用于花车。
这只计算它携带的次数,而不是携带的数量。 9 + 9 + 9将为1,而9 + 9也将为1 数字长度不一样。

1 个答案:

答案 0 :(得分:2)

>>> def countCarries(n1, n2):
...     n1, n2 = str(n1), str(n2) # turn the numbers into strings
...     carry, answer = 0, 0 # we have no carry terms so far, and we haven't carried anything yet
...     for one,two in itertools.zip_longest(n1[::-1], n2[::-1], fillvalue='0'): # consider the corresponding digits in reverse order
...             carry = int(((int(one)+int(two)+carry)//10)>0) # calculate whether we will carry again
...             answer += ((int(one)+int(two)+carry)//10)>0 # increment the number of carry terms, if we will carry again
...             carry += ((int(one)+int(two)+carry)//10)>0 # compute the new carry term
...     return answer
... 
>>> countCarries(127, 123)
1
>>> countCarries(127, 173)
2