Odszyfrowanie i znaki spoza alfabetu

Szyfr Cezara - Algorytmy z podstawy programowej (Python)

Odszyfrowanie to przesunięcie o **minus** klucz. Reszta z dzielenia w Pythonie dla liczb ujemnych daje wynik od 0 do 25, np. `(-2) % 26 == 24`, więc A przesunięte o -3 poprawnie daje X. W C++ i Javie tak nie jest i trzeba dodać 26. Spacje i inne znaki przepisujemy bez zmian. Funkcja obsługuje oba kierunki: szyfrowanie kluczem `k` i odszyfrowanie kluczem `-k`.

def cezar(tekst, klucz):
    wynik = ""
    for znak in tekst:
        if "A" <= znak <= "Z":
            wynik += chr((ord(znak) - ord("A") + klucz) % 26 + ord("A"))
        else:
            wynik += znak
    return wynik


s = cezar("ATAK O SWICIE", 3)
print(s)
print(cezar(s, -3))

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Algorytmy z podstawy programowej·Zaloguj się, aby zapisać postęp na koncie.