将字符串转换为int时出现语法错误

Mar*_*cel 0 python string 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)
Run Code Online (Sandbox Code Playgroud)

结果:

    result += (int)c    # invalid syntax??????????
                   ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

该函数应该返回参数"n"的每个数字的总和.为什么我要SyntaxError进入评论栏?变量c属于string 类型,因此应用类型转换应该不是问题int.

Wil*_*sem 6

在Python中你不会这样做.你用:

result += int(c)
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这不是强制转换:你调用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
Run Code Online (Sandbox Code Playgroud)