将字符串转换为 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
?变量c
是str
ing 类型,因此将类型转换应用于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
不能转换成整数,这也会抛出异常。它会抛出一个ValueError
exception,所以如果可能的话,用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
尝试将字符串输入转换为可设置为实体 int32 属性的整数值时出现问题
将 join 与 delete 语句一起使用时出现语法错误 [重复]
阻碍 Python 将 JSON 数据转换为转义的特殊字符时出现 Python UnicodeDecodeError [重复]