将字符串转换为 int 时出现语法错误 [重复]

Posted

技术标签:

【中文标题】将字符串转换为 int 时出现语法错误 [重复]【英文标题】:Syntax error when casting string to int [duplicate] 【发布时间】:2017-07-16 15:38:47 【问题描述】:

我的代码:

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?变量cstring 类型,因此将类型转换应用于int 应该不是问题。

【问题讨论】:

在 Python 中你不要那样转换 【参考方案1】:

在 Python 中,您不要那样转换。你使用:

result += <b>int(</b>c<b>)</b>

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

请注意,c 当然也有可能包含非整数文本。喜欢'the number fifteen whohaa'。当然int(..) 对此毫无意义。在这种情况下,它将引发ValueError。你可以使用try-except来处理这些:

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

【讨论】:

如果c不能转换成整数,这也会抛出异常。它会抛出一个ValueErrorexception,所以如果可能的话,用try-except处理它。 @Gugas:这确实是一个好建议。我已经添加了答案。 抱歉,与 try 配对的是 except 而不是 catch @Gugas:是的,有些脑筋急转弯(或者一次忙于处理太多事情)。谢谢。【参考方案2】:

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

    result += int(c)

【讨论】:

【参考方案3】:
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) 将字符串转换为整数

【讨论】:

以上是关于将字符串转换为 int 时出现语法错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 varchar 转换为 int 时出现语法错误

运行存储过程时出现错误,提示无法将varchar转换为int

尝试将字符串输入转换为可设置为实体 int32 属性的整数值时出现问题

将 join 与 delete 语句一起使用时出现语法错误 [重复]

阻碍 Python 将 JSON 数据转换为转义的特殊字符时出现 Python UnicodeDecodeError [重复]

将 C/C++ 无符号字符转换为 JAVA 时出现问题