2013-08-31 55 views
0

記得小學裏你學會攜帶數字嗎?Python 3.3.2 - 計算攜帶數字

實施例:

123 
+ 127 
------- 
    250 

您的1從3+7到下一列攜帶,和第一列更改爲0?

無論如何,我得到的是,我想制定一個程序,計算多少攜帶,這兩個數字作出(加法)。

我這樣做的方式是,我將兩個數字轉換爲字符串,將它們分解爲個體,然後將它們轉換爲整數。之後,我一次運行加1,而當一個數字是2位數字,我將取10個並移動到下一列,按我的計算。

問題是,我幾乎不知道該怎麼做,而且聽起來很慢。
這是我的代碼到目前爲止。

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.
數字長度不一樣。

回答

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 
+0

精彩的例子。它看起來非常pythonic,並且完美。 –