У меня есть две функции ниже для кодирования и декодирования текста из текстового файла. Сначала я убираю любые символы, отличные от алфавита c, и преобразую текст в нижний регистр. Функция кодирования будет сдвигать каждый символ в тексте на определенное количество мест (number_to_rotate_by). Наконец, функция декодирования будет печатать каждую возможную комбинацию символов с указанным number_to_rotate_by.
Вместо чтения из текстового файла я хотел бы создать GUI с python для приема двух входных данных (строки и целого числа) и вывода текста шифра.
import collections
import string
import re
with open('random.txt','r') as f:
data = f.read().replace('\n', '')
data_formatted = re.sub('[^A-Za-z]+', '', data.lower())
def encode(rotate_string, number_to_rotate_by):
lower = collections.deque(string.ascii_lowercase)
lower.rotate(number_to_rotate_by)
lower = ''.join(list(lower))
return rotate_string.translate(str.maketrans(string.ascii_lowercase, lower))
encode(data_formatted,1)
def decode(test_string):
for i in range(len(string.ascii_lowercase)):
print(encode(data_formatted, i))
decode(data_formatted)
Ниже приведено то, что я сейчас использую с tkinter. Тем не менее, я получаю следующую ошибку
Traceback (последний вызов был последним): файл «5.py», строка 28, в кнопке = кнопка (текст = «нажать для печати», команда = кодировать (b, 0), fg = 'red'). pack () Файл "5.py", строка 19, в кодировке return rotate_string.translate (str.maketrans (string.ascii_lowercase, lower)) AttributeError: объект 'StringVar' не имеет атрибута "перевод"
Буду признателен за любую помощь.
from tkinter import *
import collections
import string
a=Tk()
a.title('Homework 1')
a.geometry('500x500+300+100')
b=StringVar()
def encode(rotate_string, number_to_rotate_by):
c=b.get()
lower = collections.deque(string.ascii_lowercase)
lower.rotate(number_to_rotate_by)
lower = ''.join(list(lower))
return rotate_string.translate(str.maketrans(string.ascii_lowercase, lower))
labl=Label(text='Please write a word or sentence',font=30).pack()
text=Entry(textvariable=b).pack()
button=Button(text='Press to print', command=encode(b,0),fg='red').pack()
a.mainloop()