【问题标题】:Syntax error when casting string to int [duplicate]将字符串转换为 int 时出现语法错误 [重复]
【发布时间】: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 中你不要那样转换

标签: python string int


【解决方案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) 将字符串转换为整数

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2016-10-30
      • 2016-10-27
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2015-06-18
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多