python-3.x - Python 密码和嵌套循环
问题描述
我对 python 很陌生,但遇到了密码问题。我需要显示与两个输入语句相关的 3 列。用户输入是“消息”和“键文本”。第一列只是一次吐出一个字母的“消息”。第二列显示“keytext”输入的数值。第三列显示通过将 'message' 中的字母移动到 'keytext' 指示的相应值而创建的新文本(抱歉,这有点难以描述)
Message? HELLO
Keytext? AAAA
H 0 H
E 0 E
L 0 L
L 0 L
O 0 O
Message? HELLO
Keytext? ABBCD
H 0 H
E 1 F
L 1 M
L 2 N
O 3 R
现在我知道如何做一个简单的密码,但它让所有三列同时显示和合作,我只是无法弄清楚,似乎无法在任何地方找到答案。(或者可能我只是不知道该问什么正确的事情)
这是我目前的代码,在这个变体中,我似乎无法让中间列正确迭代。
keytext = str(input("Keytext? ").upper())
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in message:
place = alphabet.find(i)
for j in keytext:
place2 = alphabet.find(j)
newplace = (place + place2)% 26
code = alphabet[newplace]
print(i,place2,code)
如果 message = hello 和 keytext = abcde,那么预期的输出将是
H 0 H
E 1 F
L 2 N
L 3 O
O 4 S
但是目前是:
H 4 L
E 4 I
L 4 P
L 4 P
O 4 S
所以它只是弄清楚如何将第 2 列正确地放入循环中......有没有人对我如何解决这个问题有任何建议?任何帮助都会非常感激。
谢谢!
解决方案
你确实想出了如何去做——除了一点点偏差。在内部for
循环中,j
遍历 thekeytext
并code
覆盖 the 。因此与预期输出的偏差。您所要做的就是移除内for
循环。
message = str(input("Message? ")).upper()
keytext = str(input("Keytext? ")).upper()
# Length of keytext and message should be same.
assert len(message) == len(keytext)
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in range(len(message)):
place = alphabet.find(message[i])
place2 = alphabet.find(keytext[i])
newplace = (place + place2) % len(alphabet)
code = alphabet[newplace]
print(message[i], place2, code)
输出:
Message? hello
Keytext? abcde
H 0 H
E 1 F
L 2 N
L 3 O
O 4 S
推荐阅读
- matlab - 用于文件创建的 Matlab 字符串连接
- python - Python LIME 无法处理丢失的数据
- javascript - 如何根据 $route.path 的值调用各种函数?
- javascript - Javascript将图像链接和日期设置为对象
- python - openpyxl有没有办法用数字指定列“B”?
- c++ - 静态常量类成员与函数内比较的文字?
- c# - 如何使用具有凭据的网络共享路径作为 asp.net 核心中的静态文件夹
- python - 在 Azure Notebook VM 中找不到名为“azure.datalake”或 pip 的模块
- stored-procedures - 将动态参数传递给存储过程水晶报表
- php - 上传图片但协调器中的一些错误