我想更改输出,但是由于某些原因,当我放一个字母时,分配的字母完全不同
我已经尝试过重新分配工作,重新组织了我所知道的几乎所有内容,但它不起作用
from tkinter import *
import random
window = Tk()
window.title("Enigma Ui")
lbl = Label(window,bg = "#d5ddfc", text='''Welcome''',font=("Helvecta", 12))
lbl.grid(column=20, row=0)
window.geometry('120x90')
window.configure(bg = "#d5ddfc")
def clicked():
res = "" + txt.get()
keywords = {'k': 'a',
'7': 'b',
'r': 'c',
'9': 'd',
'q': 'e',
'6': 'f',
'p': 'g',
'2': 'h',
'j': 'i',
'4': 'j',
'u': 'k',
'0': 'l',
'h': 'm',
'2': 'n',
'1': 'o',
'1': 'p',
'z': 'q',
'm': 'r',
'7': 's',
'3': 't',
'v': 'u',
'f': 'v',
'5': 'w',
'r': 'x',
'a': 'y',
't': 'z'
}
new_label_value = res
for keyword, replacement in keywords.items():
new_label_value = new_label_value.replace(keyword, replacement)
lbl.configure(text=new_label_value)
btn = Button(window,text="Decrypt", bg= "#fcfcf3",bd=0, command = clicked)
btn.grid(column=20, row=30)
txt =Entry(window,width=20, bd=0, bg = "white")
txt.grid(column=20,row=35)
window.mainloop()
我要去山雀,以便当我把k7r9q6p2j4u0h2lizm73vf5rat放到abcdefghijklmnopqrstuvwxyz出来
答案 0 :(得分:0)
我不太了解为什么需要使用replace。您有一个字典,其中所有加密字符都作为键,而所有未加密字符都作为这些键的值。您需要做的就是遍历加密字符串中每个字符的循环,然后将其用作字典的键:
from tkinter import *
import random
window = Tk()
window.title("Enigma Ui")
lbl = Label(window,bg = "#d5ddfc", text='''Welcome''',font=("Helvecta", 12))
lbl.grid(column=20, row=0)
window.geometry('120x90')
window.configure(bg = "#d5ddfc")
def clicked():
new_label_value = ''
keywords = {'k': 'a',
'7': 'b',
'r': 'c',
'9': 'd',
'q': 'e',
'6': 'f',
'p': 'g',
'2': 'h',
'j': 'i',
'4': 'j',
'u': 'k',
'0': 'l',
'h': 'm',
'2': 'n',
'l': 'o',
'i': 'p',
'z': 'q',
'm': 'r',
'7': 's',
'3': 't',
'v': 'u',
'f': 'v',
'5': 'w',
'r': 'x',
'a': 'y',
't': 'z'
}
for i in txt.get():
new_label_value = new_label_value + keywords[str(i)]
lbl.configure(text=new_label_value)
btn = Button(window,text="Decrypt", bg= "#fcfcf3",bd=0, command = clicked)
btn.grid(column=20, row=30)
txt =Entry(window,width=20, bd=0, bg = "white")
txt.grid(column=20,row=35)
window.mainloop()
另一方面,字符串“ k7r9q6p2j4u0h2lizm73vf5rat”不会输出“ abcdefghijklmnopqrstuvwxyz”,但会输出“ asxdefgnijklmnopqrstuvwxyz”,这是因为您没有正确声明字典。
您还具有两个用于“ l”的字典键,而没有用于“ i”的字典键,因此我用“ i”替换了“ l”的第二个实例。