Python修改代码

img


这个代码哪个地方错了,需要怎样修改,为什么超出范围了,不是可以三个数的吗?2为啥错了?

img

你自己再根据你的需求改吧


def date_masking():
    n = int(input())
    if n <= 0:
        return 'ERROR'
    mask = []
    for i in range(n):
        item = input()
        item = item[:4] + '******' + item[11:]
        item = item[:7] + '*' + item[8:]
        item = item[:13] + '****' + item[17:]
        mask.append(item)
    return '\n'.join(mask)

print(date_masking())

img

你先打印mask看里面是什么
再打印item看里面是什么
你根本没理解item到底是个什么东西
简单来说,item就是每个被空格分隔开的字符串,包括人名,是个str类型
字符串本身取下标就已经是字符了,你取下标的下标就已经越界了,更别说下标里还取[4:11]这种东西

img

第一,你的函数中,n从哪里来的,最好定义成参数

第二,字符串不支持切片操作,字符串是常量类型,你需要将其转成列表后进行操作,然后转回到字符串

第三,你的 return 的缩进是否有误

def date_masking():
    for i in range(n):
        mask = input().split()
        print(mask)
        mask[0] = mask[0][:4] + "*******" + mask[0][11:];
        mask[1] = mask[1][0] + "*" + mask[1][2:]
        mask[2] = mask[2][:3] + "****" + mask[2][7:]
    return mask

n = int(input())
if n <= 0:
    print("ERROR")
else:
    print(date_masking())

你是要实现如下截图的效果吧?

img


代码如下:


def date_masking():
    mask = []
    for i in range(n):
        mask.append(input().split())
    for item in mask:
        item[0] = list(item[0])
        item[0][4:11] = ['*','*','*','*','*','*','*']
        item[1] = list(item[1])
        item[1][1] = '*'
        item[2] = list(item[2])
        item[2][3:7] = ['*','*','*','*']
        item[0] = ''.join(item[0])
        item[1] = ''.join(item[1])
        item[2] = ''.join(item[2])
    return mask

n = int(input())
if n <= 0:
    print('ERROR')
else:
    print(date_masking())