TypeError:字符串索引必须是整数!我该怎么办

时间:2017-08-03 09:01:36

标签: python typeerror

import sys
a = int(sys.argv[1])
def count_holes(n):
    dic = {'1':0, '2':0, '3':0, '4':1, '5':0, '6':1, '7':0, '8':2, '9':1}
    l = str(n)
    counter = 0
    i = 1

    for i in l:
        while i != len(l):
            counter = counter + dic[l[i]]
    print(counter)
count_holes(a)

我得到了这个:  counter = counter + dic [l [i]] TypeError:字符串索引必须是整数

2 个答案:

答案 0 :(得分:2)

你这太复杂了。您正在尝试TypeError,因为您尝试使用l的字符来索引l。但是你不需要索引l,只需直接迭代数字字符串中的字符。

这是修复后的代码版本。

import sys

def count_holes(n):
    dic = {'1':0, '2':0, '3':0, '4':1, '5':0, '6':1, '7':0, '8':2, '9':1}
    counter = 0
    for c in str(n):
        counter += dic[c]
    return counter

a = int(sys.argv[1])
print(count_holes(a))

这是一些测试代码:

for i in (12357, 4, 66, 8, 999):
    print(i, count_holes(i))

及其输出

12357 0
4 1
66 2
8 2
999 3

答案 1 :(得分:0)

当你在l中说我时,我会循环播放字符串l中的字符。所以我是一个字符串,不能用作索引。您可以枚举()字符串并在循环中使用第二个变量作为索引。

如果n在某种程度上包含len(n),我可以看到while循环可能会如何退出,但我不确定这是不是你想要的。虽然我和len(l)是不同的类型,所以你有这个适合你......这很好。