2017-02-25 71 views
-1

我的代碼:語法錯誤時鑄造的字符串爲int

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

print digit_sum(1234) 

結果:

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

功能應該返回參數「N」的每一個數字的總和。 爲什麼我會在註釋行中獲得SyntaxError?變量cstr型ING,因此它shouldn't是一個類型轉換適用於int的問題。

+1

在Python你**不投這種方式爲整數**。 –

回答

5

在Python 不投這種方式。您可以使用:

result += int(c)

從技術上講這不是鑄造:你調用int(..)內置函數其作爲輸入字符串,併產生其等同int。由於它是一種動態類型的語言,因此您不需要使用Python。

請注意,當然可能c包含的文本不是整數。像'the number fifteen whohaa'。當然int(..)無法理解。在這種情況下,它將產生一個ValueError。您可以使用try - except處理這些:

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

如果'c'不能被轉換成整數,這也會引發異常。它會拋出一個'ValueError'異常,所以如果可能的話用一個try-except對待它。 –

+1

@Gugas:這確實是一個很好的建議。我已經添加了答案。 –

+0

對不起,但它是一個'除了''不是'catch'與嘗試配對。 –

1

在Python中,您使用功能int()投一個字符串爲整數。

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) 

基本上,你需要轉換字符串中使用int(n)