还记得回到小学你学习携带数字吗?
示例:
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
数字长度不一样。
答案 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