Привет всем :) Я строю скрипт для кодирования текста с простым поворотом текста (ROT). Скрипт работает хорошо, но у меня проблема, он также вращает все символы, такие как [пробелы,!,?,.] Я работаю с таблицей ascii, чтобы сделать это, что я могу сделать, чтобы избежать вращения символов этого типа ?

def rot13(input,key): #Function to code a text with caeser chyper.
    if key > 25:
        key = 25
    elif key < 2:
        key = 2
    finaltext = ''
    for letter in input:
        num = ord(letter)
        if (num + key) > 122: #If the final number is greater than 122..
            x = (num + key) - 122
            finaltext += chr(x + ord('a') - 1)
        elif((num + key <= 122)):
            finaltext += chr(num + key)
    print(finaltext)
1
prossellob 28 Фев 2017 в 21:18

2 ответа

Лучший ответ

Прежде чем «вращать» своего персонажа, добавьте проверку, чтобы увидеть, является ли он буквенно-цифровым:

if letter.isalpha():
    # Do your thing
else:
    finaltext += letter
3
LoicM 28 Фев 2017 в 18:21

Попробуй это:

>>> import string
>>> letter = 'a'
>>> letter in string.letters
True
>>> letter = '.'
>>> letter in string.letters
False
1
Szabolcs 28 Фев 2017 в 18:21