类型错误:字符串索引必须是整数!我该怎么办


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)

我得到了这个: 计数器 = 计数器 + dic[L[i]] 类型错误:字符串索引必须是整数

你把这弄得太复杂了。你得到这个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

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

如果 n 以某种方式包含 len(n(,我可以看到 while 循环如何退出,但我不确定这是否是你想要的。虽然 i 和 len(l( 是不同的类型,所以你有适合你...这很好。

相关内容

最新更新