ord () ожидал символ, но найдена строка длиной 6 - PullRequest
0 голосов
/ 08 января 2019

Переменная всегда шифруется правильно, и это строка, но когда я пытаюсь добавить строку помимо переменной, она вылетает и ожидает символы. Есть предложения?

monday_var = StringVar()
monday_box = tk.Checkbutton(self, state='active',  variable=monday_var, 
onvalue='Monday', offvalue='')
monday_box.grid(row=10, column=1)


def caesar():
    string_new = monday_var.get()
    new_file = open("personal decoded.txt", "w")

    key = -1
    decrypted_message = ""
    for i in string_new:
        letter_value = ord(i) + key
        if letter_value > ord("z"):
            letter_value -= ord("z") - ord("a") + 1
        decrypted_message = decrypted_message + chr(letter_value)

    new_file.write(decrypted_message)
    new_file.close()

1 Ответ

0 голосов
/ 08 января 2019

Эту ошибку вы получите, если передадите строку в ord вместо символа. Возможно, вы передаете строку длины 6 в функцию ord, поэтому вы получаете эту ошибку.

In[55]: ord('a')
Out[54]: 97

In[56]: ord("rhia")
    Traceback (most recent call last):
    File "C:\LegacyApp\Python27\lib\site-packages\IPython\core\interactiveshell.py", 
    line 2827, in run_code
    exec code_obj in self.user_global_ns, self.user_ns
    File "<ipython-input-55-7cc3b9b0818e>", line 1, in <module> ord("rhia")
    TypeError: ord() expected a character, but string of length 4 found

Здесь, когда я передаю 'a' в ord, он возвращает значение, но когда я передаю строку ("rhia"), он выдает ошибку TypeError, потому что ord принимает только символ или последний.

...