2016-10-28 44 views
0

我想將拆分def函數參數分成兩個用戶輸入,然後總結兩個值然後打印出來。用戶輸入的Python拆分def函數參數

示例代碼:

def ab(b1, b2): 
if not (b1 and b2): # b1 or b2 is empty 
    return b1 + b2 
head = ab(b1[:-1], b2[:-1]) 
if b1[-1] == '0': # 0+1 or 0+0 
    return head + b2[-1] 
if b2[-1] == '0': # 1+0 
    return head + '1' 
#  V NOTE V <<< push overflow 1 to head 
return ab(head, '1') + '0' 


print ab('1','111') 

我想改變 「打印AB( '1', '111')」 到用戶輸入。

我的代碼:

def ab(b1, b2): 
if not (b1 and b2): # b1 or b2 is empty 
    return b1 + b2 
head = ab(b1[:-1], b2[:-1]) 
if b1[-1] == '0': # 0+1 or 0+0 
    return head + b2[-1] 
if b2[-1] == '0': # 1+0 
    return head + '1' 
#  V NOTE V <<< push overflow 1 to head 
return ab(head, '1') + '0' 

b1 = int(raw_input("enter number")) 
b2 = int(raw_input("enter number")) 


total = (b1,b2) 

print total 

我的結果:1111

期望的結果:1000

+2

請修復您的縮進... – DavidG

+1

您剛剛錯過了ab通話嗎? like total = ab(b1,b2) –

回答

2

我不知道你是如何得到回報在這裏工作。 首先(如丹尼爾)所述,你有這個函數調用丟失/不正確。

total = ab(b1,b2) 

其次,你的類型轉換(改變輸入的類型從stringinteger) - 在你的函數ab你在b1b2,這將導致異常應用字符切片:

Traceback (most recent call last): 
    File "split_def.py", line 33, in <module> 
    total = ab_new(b1,b2) 
    File "split_def.py", line 21, in ab_new 
    head = ab_new(b1[:-1], b2[:-1]) 
TypeError: 'int' object has no attribute '__getitem__' 

最後的工作代碼必須是:

def ab(b1, b2): 
    if not (b1 and b2): # b1 or b2 is empty 
     return b1 + b2 
    head = ab(b1[:-1], b2[:-1]) 
    if b1[-1] == '0': # 0+1 or 0+0 
     return head + b2[-1] 
    if b2[-1] == '0': # 1+0 
     return head + '1' 
    #  V NOTE V <<< push overflow 1 to head 
    return ab(head, '1') + '0' 

b1 = raw_input("enter number") 
b2 = raw_input("enter number") 

total = ab(b1,b2) 

print "total", total 
1

你沒有打電話給你的函數在第二個片段。

total = ab(b1,b2) 
+0

結果:TypeError:'int'object has no attribute'__getitem__' – terry

+0

因此,問問自己爲什麼要將這些輸入字符串轉換爲整數。在第一個片段中,你傳遞了字符串。 –