我正在构建一个接受表示多行的字符串(文本)的函数,并计算以数字(0-9)开头的行数,然后返回一个整数作为计数结果。
我使用split来获取每一行,然后获得检查第一个索引的函数。我得到一个超出范围的错误,因为一些测试用例有空格作为第一个索引。我该如何解决这个问题?
这是确切的错误:
追踪(最近一次通话): 在test_count_digit_leading_lines_14中输入“testerl7.py”,第88行 def test_count_digit_leading_lines_14(self):self.assertEqual(count_digit_leading_lines(“\ t4G \ n4G \ n4 \ tG \ n \ n4000 \ n55 \ nsix \ n7天”),5) 在count_digit_leading_lines中输入文件“/Users/kgreenwo/Desktop/student.py”,第8行 check = newlines [i] [0] #check每行中的第一个字符 IndexError:字符串索引超出范围
以下是示例输出:
count_digit_leading_lines(“AAA \ n1st”)→1#第2行以数字1开头
count_digit_leading_lines(“\ t4G \ nHz \ n”)→0#第1行以标签开头
count_digit_leading_lines(“0 \ n0 3 \ nn4 \ n”)→2
这是我目前的代码:
def count_digit_leading_lines(text):
count=0
if text == " ":
return 0
else:
newlines=text.rstrip('\n').split('\n') #split each line
for i in range(len(newlines)):
if newlines[i] != None:
check=newlines[i][0] #check first character in each line
if check.isdigit(): #if 1st is digit 0-9
count+=1
return count #return how many times
答案 0 :(得分:0)
newlines数组中可能有0个长度的字符串。您应该首先删除这些元素:
# add this line newlines = [ a for a in newlines if len(a) > 0 ]
# as shown below:
def count_digit_leading_lines(text):
count=0
if text == " ":
return 0
else:
newlines = text.rstrip('\n').split('\n') #split each line
newlines = [ a for a in newlines if len(a) > 0 ]
for i in range(len(newlines)):
check=newlines[i][0] #check first character in each line
if check.isdigit(): #if 1st is digit 0-9
count+=1