首页 > 解决方案 > 我在 Codewars 中遇到此错误,但在 PyCharm 中可以正常工作吗?

问题描述

这是我正在研究的问题!

拆分字符串

完成解决方案,以便将字符串拆分为两个字符对。如果字符串包含奇数个字符,那么它应该用下划线 ('_') 替换最后一对中缺少的第二个字符。

def solution(s):
    answer = []
    a = 0
    if (len(s) % 2) != 0:
        a = s + "_"
    for i in range(len(a) // 2):
        answer.append(a[2 * i:2 * i + 2])
    return answer

Traceback (most recent call last):
  File "main.py", line 13, in <module>
    test.assert_equals(solution(inp), exp)
  File "/home/codewarrior/solution.py", line 6, in solution
    for i in range(len(a) // 2):
TypeError: object of type 'int' has no len()

标签: python

解决方案


问题是您将 a 初始化为整数a=0

如果 s 是偶数,a = s + "_"则不执行该行。所以a在这种情况下仍然是一个整数。

这就是为什么(len(a) // 2)给出错误。len不适用于整数,仅适用于字符串。

要解决此问题,请初始化a=s


推荐阅读