我在python中遇到了一个列表退出错误

2022-12-05 03:12:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个初级python程序员和程序员 我开始做代码战练习,我得到了以下任务:

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

解决方案('abc')#应返回['ab',c'] 解决方案('abcdef')#应返回['ab','cd','ef']

现在,我编写了以下代码,给出了正确的结果:

def solution(s):
    l = [s[i:i+2] for i in range(0,len(s) ,2)]
    if len(l[-1]) == 1:
        l[-1] += "_"
    return l

print(solution('abc')) -> ['ab', 'c_']
print(solution('asdfadsf')) -> ['as', 'df', 'ad', 'sf']

但是,当我向代码战争发送提交代码时,我得到以下错误:

if len(l[-1]) == 1: IndexError: list index out of range

如果在visual studio代码中进行测试,则不会出现错误

有人能给我解释一下我该怎么解决这个问题吗? 谢谢!!:)


Tags: 字符串代码lenifab错误range解决方案字符程序员奇数abcprintsolution个字符
1条回答
网友
1楼 · 发布于 2022-12-05 03:12:18

问题是l[-1]的输入''。在这种情况下,列表理解返回一个空列表[],其中没有l[-1]元素

分别检查空字符串输入:

def solution(s): 
    if not s: 
        return []

    l = [s[i:i+2] for i in range(0,len(s) ,2)]
    if len(l[-1]) == 1:
        l[-1] += "_"
    return l

print(solution('abc')) # -> ['ab', 'c_']
print(solution('asdfadsf')) # -> ['as', 'df', 'ad', 'sf']

print(solution('')) # -> []