letters = ['7', 'u', 'b', 'u', 'r', 'l', 'n', ' ', '5', 'o', 'j', 'c', '3', '7', '1', 'x', 'd', 'x', 'm', '8', 'a', 'v', 'f', 'd', 'z', 'z', 'd', 'l', 'v', 'o', 'q', 'j', 'u', '2', 'o', 'l', 'v', '6', 'i', 'o', 'i', '5', '9', 'b', 'c', 'i', 's', 'a', 'i', '2', '!', '8', 's', 't', '9', 'r', 'x', 'w', 'j', '1', '5', '5', '3', 'm', '9', '6', 'r', 'w', '9', 'd', 'd', 'r', 'y', '3', 'p', 'h', 'f', '9', '1', 'b', 'w', 'u', 'c', 'e', 'r', '3', 'i', 'i', 'x', '7', 'x', '2', 'n', 'p', 'a', '4', 'b', 'f', 'w', ' '] letters.append('!') answer = letters answer.append(str(letters.count('x'))) ​answer.append(letters[-1]) answer.extend(letters[-3:]) print(''.join(answer))

时间: 2023-06-09 15:08:41 浏览: 54
你想问的是这段 Python 代码会输出什么结果,对吧?答案是:uburln 5ojc371xdxmm8avfdzzdlvoqju2olv6ioi59bcisai2!wuceri7x2npa4bfw!5 解释如下:代码首先定义了一个包含多个字符的列表 letters,并且通过 append 方法添加了一个 "!"。然后,代码接着对 letters 进行了一系列操作,包括添加元素、计算元素数量、获取元素等等。最后,代码通过 join 方法将结果输出为一个字符串。
相关问题

def guess_key2(cipher_text, word1, word2 ,word3): letter_frequency = get_letter_frequency(cipher_text.lower()) excluded_letters = [letter for letter in letter_frequency.keys() if letter_frequency[letter] == 0] sorted_letters = sorted([letter for letter in letter_frequency.keys() if letter_frequency[letter] > 0], key=lambda x: letter_frequency[x], reverse=True) print("Excluded letters:", excluded_letters) print() most_common_letters_m = [sorted_letters[:1], sorted_letters[1:7], sorted_letters[7:10], sorted_letters[10:15], sorted_letters[15:20], sorted_letters[20:26]] # high 8 middle 8 low 10 f1 = ['e'] f2 = ['a', 'i', 'r', 't', 'o', 'n'] f3 = ['s', 'l', 'c'] f4 = ['u', 'p', 'm', 'd', 'h'] f5 = ['g', 'b', 'y', 'f', 'v'] mf = [f1, f2, f3, f4, f5] mp = [[j for j in range(len(mf[i]))] for i in range(len(mf))] flag = True while(flag): key = {} row_permutations = [itertools.permutations(row) for row in mp] matrix_permutations = itertools.product(*row_permutations) for permutation in matrix_permutations: for i in range(len(mp)): for j in range(len(mp[i])): key[most_common_letters_m[i][permutation[i][j]]] = mf[i][j] decrypted_text = decrypt(cipher_text, key) if is_plaintext(decrypted_text, word1, word2 ,word3): flag=False return key 这里每个key不包含全部的26组对应关系,请修改以将他们补齐

可以将代码修改为: ``` import itertools import random def guess_key2(cipher_text, word1, word2, word3): letter_frequency = get_letter_frequency(cipher_text.lower()) excluded_letters = [letter for letter in letter_frequency.keys() if letter_frequency[letter] == 0] sorted_letters = sorted([letter for letter in letter_frequency.keys() if letter_frequency[letter] > 0], key=lambda x: letter_frequency[x], reverse=True) print("Excluded letters:", excluded_letters) print() most_common_letters_m = [sorted_letters[:1], sorted_letters[1:7], sorted_letters[7:10], sorted_letters[10:15], sorted_letters[15:20], sorted_letters[20:26]] # high 8 middle 8 low 10 f1 = ['e'] f2 = ['a', 'i', 'r', 't', 'o', 'n'] f3 = ['s', 'l', 'c'] f4 = ['u', 'p', 'm', 'd', 'h'] f5 = ['g', 'b', 'y', 'f', 'v'] mf = [f1, f2, f3, f4, f5] mp = [[j for j in range(len(mf[i]))] for i in range(len(mf))] flag = True while flag: key = {} row_permutations = [itertools.permutations(row) if len(row) > 1 else row for row in mp] matrix_permutations = itertools.product(*row_permutations) for permutation in matrix_permutations: for i in range(len(permutation)): if len(permutation[i]) == 1: key[most_common_letters_m[i][0]] = mf[i][permutation[i][0]] else: for j in range(len(permutation[i])): key[most_common_letters_m[i][permutation[i][j]]] = mf[i][j] # 补齐未配对的字母 remaining_letters = set('abcdefghijklmnopqrstuvwxyz') - set(key.keys()) while len(remaining_letters) > 0: letter = random.sample(remaining_letters, 1)[0] value = random.sample(set('abcdefghijklmnopqrstuvwxyz') - set(key.values()), 1)[0] key[letter] = value remaining_letters = set('abcdefghijklmnopqrstuvwxyz') - set(key.keys()) decrypted_text = decrypt(cipher_text, key) if is_plaintext(decrypted_text, word1, word2, word3): flag = False break return key ``` 这样,我们在生成 key 的过程中,对于每个位置,如果对应的单词只包含一个字母,则直接将该字母和对应的字母配对,否则使用 permutations() 函数生成所有可能的排列,然后将排列中的字母按照顺序与 mf 中的字母配对。然后,我们使用随机字母补齐未配对的字母,直到 key 包含 26 对对应关系。最后,我们检查解密后的明文是否满足给定的单词列表,如果满足,则返回 key。 需要注意的是,这里的随机字母选择算法并不完美,如果 mf 中的字母和已配对的字母集合中的字母的交集不为空,可能会导致算法产生死循环。如果需要更安全和更合理的随机字母选择算法,可以参考 Python 标准库中的 secrets 模块。

most_common_letters_m = [sorted_letters[:8], sorted_letters[8:16], sorted_letters[-10:]] # high 8 middle 8 low 10 f1 = ['e'] # >10% f2 = ['a', 'i', 'r', 't', 'o', 'n'] f3 = ['s', 'l', 'c'] f4 = ['u', 'p', 'm', 'd', 'h'] f5 = ['g', 'b', 'y', 'f', 'v'] f6 = ['w', 'k', 'x', 'z', 'q', 'j'] 修改这段代码 使most_common_letters_m分成f1-f6形式的6段

好的,你可以按照下面的方式修改代码,将`most_common_letters_m`分成6个部分: ``` f1 = sorted_letters[:8] # >10% f2 = sorted_letters[8:16] # high 8 f3 = sorted_letters[16:22] # middle-upper 6 f4 = sorted_letters[22:27] # middle-lower 5 f5 = sorted_letters[27:32] # low 5 f6 = sorted_letters[-6:] # lowest 6 most_common_letters_m = [f1, f2, f3, f4, f5, f6] ``` 这样,`most_common_letters_m`就被分成了6个部分,分别对应6个频率段。其中,`f1`表示频率最高的前8个字母,频率大于10%;`f2`表示频率次高的8个字母;`f3`表示频率居中偏上的6个字母;`f4`表示频率居中偏下的5个字母;`f5`表示频率最低的5个字母;`f6`表示频率最低的6个字母。

相关推荐

def guess_key3(cipher_text, word1, word2, word3): #变了点 letter_frequency = get_letter_frequency(cipher_text.lower()) excluded_letters = [letter for letter in letter_frequency.keys() if letter_frequency[letter] == 0] sorted_letters = sorted([letter for letter in letter_frequency.keys() if letter_frequency[letter] > 0], key=lambda x: letter_frequency[x], reverse=True) print("Excluded letters:", excluded_letters) print() f1 = ['a', 'i', 'r'] f2 = ['t', 'o', 'n'] f3 = ['s', 'l', 'c'] f4 = ['u', 'p', 'm', 'd', 'h'] f5 = ['g', 'b', 'y', 'f'] f6 = ['v', 'w','k'] f7 = ['x', 'z', 'q', 'j'] mf = [f6, f5, f4, f3, f2, f1] key = {sorted_letters[0]: 'e'} most_common_letters_m = [sorted_letters[19:22],sorted_letters[15:19] ,sorted_letters[10:15] ,sorted_letters[7:10] ,sorted_letters[4:7], sorted_letters[1:4]] c1 = 0.05 for i1 in range(5): lk1=len(key) key1 = check3(cipher_text, word1, word2, word3, most_common_letters_m, sorted_letters, mf, f7, lk1, key, c1, i1) key.update(key1) del mf[-1] del most_common_letters_m[-1] print(key) print() c1+=0.1 return key def check3(cipher_text, word1, word2, word3, most_common_letters_m, sorted_letters, mf, f7, lk1, key, c1, i1): mp = [[j for j in range(len(mf[i]))] for i in range(len(mf))] row_permutations = [itertools.permutations(row) for row in mp] matrix_permutations = itertools.product(*row_permutations) for permutation in matrix_permutations: for i in range(len(mp)): for j in range(len(mp[i])): key[most_common_letters_m[i][permutation[i][j]]] = mf[i][j] if len(key) < len(sorted_letters): for i, val in enumerate(f7): key[sorted_letters[i]] = val decrypted_text = decrypt(cipher_text, key) k1 = is_plaintext3(decrypted_text, word1, word2 ,word3) #k2 = k1 if k1 > k2 else k2 if( k1 > c1): key1 = dict(list(key)[lk1:len(mp[i1])+lk1]) return key1 def is_plaintext3(text, word1, word2 ,word3): words_found = 0 for word in text.split(): if word.lower() in word1: words_found += 10 if word.lower() in word2: words_found += 3 if word.lower() in word3: words_found += 1 return (words_found / len(text.split())) def decrypt(cipher_text, key): mapping_dict = str.maketrans(key) return cipher_text.translate(mapping_dict)有什么问题

最新推荐

recommend-type

JavaScript_catvod的开放版本.zip

JavaScript
recommend-type

node-v10.4.1-headers.tar.gz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

node-v13.8.0-headers.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

node-v14.1.0-headers.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依