题目:利用列表隐藏并找到有用的信息
(1) 描述
1) 题源
- 鱼 C 论坛中“小甲鱼”老师出的题
- 链接地址:
2) 修改
- 题中带有一条极长的字符串,不方便写在此随笔中
- 我自己心血来潮,将此题改了改
- 具体见下方要求
(2) 要求
已知 2 个列表与 1 个字符串:
list1 = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']
list2 = []
str1 = " I am not a smart man, but I know what love is."
每次从 list1 中随机选出 1 个字符,并将其添加到列表 list2 中,总共添加 520 个字符
将 str1 中的每个字符插入 list2 中
- 不改变每个字符的先后顺序
- 分散插入 list2 中
计算 list2 中各个字符的个数
把插入其中的 str1 找出来
(3) 程序
1) 代码
import randomlist1 = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')']list2 = []str1 = "I am not a smart man, but I know what love is."len_str1 = len(str1) # 字符串长度len_interval = 520//len_str1 # 间隔# 写入for i in range(520): # list2 中的 520 个字符全由 list1 中的字符随机重复组成 temp1 = random.randint(0, 9) list2.append(list1[temp1])temp2 = 0for j in range(len_str1): # 把 str1 中的各个字符“藏入” list2 中 temp2 += random.randint(1, len_interval) list2.insert(temp2, str1[j])# 读出list3 = [] # 存放于 list1 中相同的字符list4 = [] # 存放找出来的 str1for k in range(520+len_str1): # list2 的长度为 520+len_str1 if list2[k] not in list3: print(list2[k], list2.count(list2[k])) list3.append(list2[k]) if list2[k] not in list1: list4.append(list2[k])for i in range(len_str1): print(list4[i], end='')
2) 运行情况
- 因为一开始存入 list2 中的 520 个字符是随机生成的,所以(几乎)每次运行的结果都是不同的,若出现连续两次相同,可以买一波彩票
- 运行截图