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:字符串索引必须是整数
答案 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)是不同的类型,所以你有这个适合你......这很好。