第三行看不明白 尤其是-2内个

为什么-2不是取斯李,这里不是很明白能讲解一下吗,还有就是取负值的时候,应该怎么走

img

  这是序列切片,正整数表示往右数,负整数列表往左数。往右从 0 起,往左 -1 始。

  第三行 mask = s_on[5:] + '***' + s_name[-2:],则 mask = '20214***李斯'。s_on[5:] 意为截取'20214010123'的第5索引前面的所有字符串,s_name[-2:] 意为取'李斯'倒数两个字符。


  关于切片,您可以翻阅我发布于2022-11-08的学习笔记Python之魔幻切片了解更多。


在 Python 中,使用下标(索引)来访问列表中的元素。如果列表中包含负数下标,则表示从列表末尾开始逆向访问元素。

当使用负数下标截取列表时,我们可以将负数下标看作从列表末尾开始的倒数第几个元素。例如,一个长度为 n 的列表的最后一个元素的下标为 n-1,而倒数第一个元素的下标则为 -1,倒数第二个元素的下标为 -2,以此类推。

下面是一些示例代码,演示如何使用负数下标截取列表:

lst = [1, 2, 3, 4, 5]

# 截取倒数第三个元素到最后一个元素
print(lst[-3:])
# 输出:[3, 4, 5]

# 截取列表的前三个元素
print(lst[:-2])
# 输出:[1, 2, 3]

# 截取第二个元素到倒数第二个元素
print(lst[1:-1])
# 输出:[2, 3, 4]

在上述示例代码中,我们创建了一个列表 lst,然后通过使用负数下标来截取不同位置的元素。在第一个示例中,我们截取了倒数第三个元素到最后一个元素,因此返回列表的最后三个元素 [3, 4, 5]。在第二个示例中,我们截取了列表的前三个元素,因此返回列表中的前三个元素 [1, 2, 3]。在第三个示例中,我们截取了第二个元素到倒数第二个元素,因此返回列表中除首尾两个元素以外的所有元素 [2, 3, 4]

需要注意的是,使用负数下标截取列表时,要确保下标值不超出列表的索引范围,否则会导致 IndexError 异常。

在你这个题中:
应该选A
根据给出的代码,变量 s_no 存储学号字符串 '20214010123',变量 s_name 存储姓名字符串 '李斯'

接下来,代码用切片获取学号的前五位 '20214' 和姓名的最后两位 '李斯',然后用三个星号 "***" 拼接这三个部分,得到替换后的新字符串 '20214***李斯'。这样,变量 mask 就存储了处理后的信息字符串 '20214***李斯'

最后,使用 print() 函数将 mask 输出到控制台上,结果为 '20214***李斯'