day20 猜字母

猜字母

把abcd…s共19个字母组成的序列重复拼接106次,得到长度为2014的串。

接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。

得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。


思路:筛选

不考虑数学方法,用计算机思维解题

筛选条件:删除第奇数个字母

数据结构:字符串无法修改,用数组
筛选形式:涉及数组下标,首先考虑enumerate()
由于filter()enumerate()会造成单个元素逐渐复杂的现象,所以直接用数组生成式

import string
lst = []
for i in range(106):
    lst.extend(list(string.ascii_letters[:19]))
while len(lst) > 1:
    lst = [y for x, y in enumerate(lst) if x % 2 == 1]
print(lst[0])

day20 猜字母

上一篇:python基础之enumerate() 函数+ Counter类计数器


下一篇:【python学习笔记】循环方式