Prezentacja multimedialna
Problem 1
Napisz program szyfrujący podany tekst (przy ustalonym kluczu szyfrowania). Przetestuj jego działanie dla wyrazu informatyka
oraz klucza o wartości 4.
Specyfikacja:
Dane:
klucz
– liczba całkowita; wartość klucza szyfrowaniawyraz
– ciąg znaków; wiadomość do zaszyfrowania zapisana małymi literami
Wynik:
Program na wyjściu standardowym wyświetli tekst zaszyfrowany przy pomocy ustalonego klucza szyfrowania.
Polecenie 1
Zapoznaj się z prezentacją. Porównaj z nią swoje rozwiązanie.
Zastanów się, jak zmienić program, aby tekst był szyfrowany poprawnie bez względu na wielkość liter.
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
Zmienna wyraz
przechowuje ciąg znaków do zaszyfrowania; zmienna zaszyfrowanyWyraz
przechowa z kolei zaszyfrowane słowo. Zmiennej klucz
przypiszemy wartość klucza szyfrującego.
Krok trzeci
Następnym etapem jest utworzenie pętli, dzięki której odczytamy kolejne litery szyfrowanego słowa:
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
for znak in wyraz:
Krok czwarty
Znajdziemy kod ASCII każdej litery. Python oddaje do dyspozycji programisty funkcję ord()
, która jako argument przyjmuje znak i zwraca jego wartość w kodzie ASCII.
Krok piąty
Dodajemy wartość klucza do odpowiadającego literze kodu ASCII:
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
for znak in wyraz:
przesunietaLitera = ord(znak) + klucz
Krok szósty
Pamiętajmy, że mogliśmy wykroczyć poza zakres kodów ASCII przypisanych literom. Odejmujemy więc od otrzymanej wcześniej sumy kod ASCII pierwszej małej litery (czyli "a") i wykonujemy operację modulo 26.
Krok siódmy
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
for znak in wyraz:
przesunietaLitera = ord(znak) + klucz
poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26
Po wykonaniu ostatniego działania dodajemy do otrzymanego wyniku wartość "a". Obliczoną wartość zmieniamy z liczby (kodu ASCII) w znak.
Krok ósmy
W języku Python do wykonania takiej zamiany służy funkcja chr()
, która jako argument przyjmuje wartość kodu ASCII, a zwraca odpowiadający jej znak.
Krok dziewiąty
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
for znak in wyraz:
przesunietaLitera = ord(znak) + klucz
poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26
zaszyfrowanaLitera = chr(poprawkaNaKoniecAlfabetu + ord('a'))
Program jest już prawie gotowy. Pozostała jeszcze jedna operacja.
Krok dziesiąty
Stosując konkatenację dopisujemy zaszyfrowaną literę na końcu zmiennej zaszyfrowanyWyraz
. Po zakończeniu działania pętli wyświetlamy zaszyfrowane słowo:
wyraz = "informatyka"
zaszyfrowanyWyraz = ""
klucz = 4
for znak in wyraz:
przesunietaLitera = ord(znak) + klucz
poprawkaNaKoniecAlfabetu = (przesunietaLitera - ord('a')) % 26
zaszyfrowanaLitera = chr(poprawkaNaKoniecAlfabetu + ord('a'))
zaszyfrowanyWyraz += zaszyfrowanaLitera
print(zaszyfrowanyWyraz)
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.