本帖最后由 smallwh 于 2023-7-24 16:07 编辑
- s = input("请输入一个字符串:")
- res = []
- for each in s:
- if res and res[-1].lower() == each.lower() and res[-1] != each:
- res.pop()
- else:
- res.append(each)
- for each in res:
- print(each,end='')
复制代码
代码第3行是for循环,每次执行循环体(4~7行)时为each赋值。第一次each是s中的第一个字符,第二次each是s中的第二个字符,以此类推。
- if (res and (res[-1].lower() == each.lower())) and res[-1] != each:
复制代码
if后面的表达式根据优先级加上括号,就变成了上面的样子。程序第一次执行for循环时,res是空列表,其bool值为False,导致整个表达式为False。此时执行else中的语句,将each(s的第一个字符)加到res中。
res[-1].lower() 指res的最后一个元素的小写,each.lower() 指当前each的小写。res[-1].lower() == each.lower()指判断res最后加入元素的小写是否等于each.lower() 。
res[-1] != each指res的最后一个元素是否不等于当前each。
也就是说,if语句判断的是前后两个字符(分别是res[-1]和each)是否为同一个字母的大小写。如果前后两个字符为同一个字母的大小写,则都不要;若都是同一个字母的小写(或者都是大写),则都保留;若前后字母不同,也都保留。