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

Syntax error when casting string to int

本问题已经有最佳答案,请猛点这里访问。

我的代码:

1
2
3
4
5
6
7
8
def digit_sum(n):
    result = 0
    s = str(n)
    for c in s:
        result += (int)c    # invalid syntax??????????
    return result

print digit_sum(1234)

结果:

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

函数应该返回参数"n"中每个数字的和。为什么我要把EDOCX1[0]放在注释行中?变量cstring类型,因此将类型强制转换应用于int不应成为问题。


在python中,您不会这样投射。您使用:

1
result += int(c)

从技术上讲,这不是强制转换:您调用int(..)内置函数,该函数将字符串作为输入,并生成与int等效的字符串。不能在Python中强制转换,因为它是一种动态类型语言。

请注意,c当然可能包含非整数的文本。像'the number fifteen whohaa'一样。当然,int(..)无法理解这一点。在这种情况下,它将提高一个ValueError。您可以使用tryexcept来处理这些:

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


在Python中,使用函数int()将字符串强制转换为整数。

1
    result += int(c)


1
2
3
4
5
6
7
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)将字符串转换为整数。