2016-10-28 5 views
0

Ich versuche Split-Funktion Parameter in zwei Benutzer-Eingabe zu tun, dann summieren beide Wert dann ausdrucken.Python Split Def-Funktion Parameter für die Benutzereingabe

Beispielcode:

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') 

Ich mag würde "Druck ab ('1', '111')" ändern, um eine Benutzereingabe.

Mein Code:

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 

Mein Ergebnis: 1.111

Erwarten Ergebnis: 1000

+2

Bitte korrigieren Sie Ihren Einzug ... – DavidG

+1

Haben Sie nicht gerade den Anruf ab? wie total = ab (b1, b2) –

Antwort

2

Ich weiß nicht, wie Sie die Rücksendung hier arbeiten. Zuallererst (wie Daniel sagte), haben Sie den Funktionsaufruf fehlend/unpassend.

total = ab(b1,b2) 

Zweitens sind Sie Typ-Casting (Art der Eingabe string-integer Ändern) - und in Ihrer Funktion ab Sie String-Slicing sich bewerben auf der b1 und b2, was zu einer Ausnahme führen wird:

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__' 

Der letzte Arbeits Code muss sein:

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

Sie nicht Ihre Funktion in dem zweiten Schnipsel nennen.

total = ab(b1,b2) 
+0

Ergebnis: TypeError: 'int' Objekt hat kein Attribut '__getitem__' – terry

+0

Fragen Sie sich also, warum Sie diese Eingabezeichenfolgen in Ints konvertieren. Im ersten Abschnitt übergeben Sie Zeichenfolgen. –