2017-02-25 3 views
-1

Mein Code in int:Syntaxfehler beim Gießen String

def digit_sum(n): 
    result = 0 
    s = str(n) 
    for c in s: 
     result += (int)c # invalid syntax?????????? 
    return result 

print digit_sum(1234) 

Ergebnis:

result += (int)c # invalid syntax?????????? 
       ^
SyntaxError: invalid syntax 

Die Funktion soll die Summe der einzelnen Ziffern des Arguments "n" zurückzukehren. Warum bekomme ich SyntaxError in der kommentierten Zeile? Die Variable c ist vom Typ str, daher sollte es kein Problem sein, einen Typcast auf int anzuwenden.

+1

In Python auf Integer ** Sie nicht so werfen Sie **: diese except zu handhaben - Sie können try verwenden. –

Antwort

5

In Python Sie nicht auf diese Weise geworfen haben. Sie verwenden:

result += int(c)

Technisch spricht dies nicht wirft: Sie int(..) eingebaute Funktionaufrufen, die die Zeichenfolge als Eingabe nimmt und ihr Äquivalent als int. Sie sprechen nicht in Python, da es sich um eine dynamisch typisierte Sprache handelt.

Beachten Sie, dass es natürlich möglich ist, dass c Text enthält, der keine Ganzzahl ist. Wie 'the number fifteen whohaa'. Natürlich kann int(..) daraus keinen Sinn ergeben. In diesem Fall wird eine ValueError ausgelöst.

try: 
    result += int(c) 
except ValueError: 
    # ... (do something to handle the error) 
    pass
+1

Dies kann auch eine Ausnahme auslösen, wenn 'c' nicht in eine ganze Zahl umgewandelt werden kann. Es wird eine "ValueError" -Ausnahme ausgelöst, wenn möglich mit einem try-except behandeln. –

+1

@Gugas: das ist in der Tat ein guter Vorschlag. Ich habe das hinzugefügt, um die Antwort zu geben. –

+0

Entschuldigung, aber es ist ein 'außer' nicht ein' catch', um mit dem Versuch zu paaren. –

1

In Python wird eine Zeichenfolge in eine ganze Zahl umgewandelt, indem eine Funktion int() verwendet wird.

result += int(c) 
0
def digit_sum(n): 
     numsum=[] 
     add_up=str(n) 
    for n in add_up[0: len(add_up)]: 
     numsum.append(int(n)) 
    return sum(numsum) 
print digit_sum(1234) 

Grundsätzlich müssen Sie Zeichenfolge werfen mit int(n)

Verwandte Themen