Polecenie 1

Zapoznaj się z prezentacją. Prześledź działanie programu.

Zapoznaj się z prezentacją, w tym z działaniem programu.

RBqupnEnSlWoy
Nagranie dźwiękowe.

Szyfr płotkowy – rodzaj szyfru przestawieniowego

Szyfr płotkowy jest przykładem szyfru przestawieniowego – w zaszyfrowanej wiadomości obecne są wszystkie znaki użyte w tekście jawnym, zmieniona zostaje jedynie ich pozycja w szyfrogramie. Aby zaszyfrować wiadomość algorytmem szyfru płotkowego, na początku należy wybrać klucz symetryczny, który posłuży do zaszyfrowania i odszyfrowania wiadomości.

RovSnqgrF2Exy
Nazwa szyfru płotkowego pochodzi od tego, co przypomina swoją konstrukcją.
Źródło: Mustang Joe, dostępny w internecie: flickr.com [dostęp 24.01.2023], domena publiczna.
RzJK9n5GkYs7G
RE8RCo9NcPUwO
Nagranie dźwiękowe.

Sposób działania

W e‑materiale teoretycznym omówiliśmy algorytm szyfrowania płotkowego, w tej prezentacji przeanalizujemy jego implementację w języku Python. W przedstawionym programie zastosujemy funkcję przyjmującą dwa parametry: tekst_do_szyfrowania oraz klucz.

W przypadku tego algorytmu kluczem będzie wysokość płotka, czyli w podanym przykładzie: pięć.

RVxaM1uEGzojb
Nagranie dźwiękowe.

Widzimy pełny kod źródłowy funkcji. Podzielony jest na cztery główne kroki, które za chwilę omówimy dokładniej. Zwróćmy uwagę na wiersze: 4., 9., 11., 22., 37., 41. i 48. – w nich zawarte są funkcje print, dzięki którym możemy obserwować wyniki kolejnych działań algorytmu. W wierszach od 20. do 37. znajduje się główna część programu. Jest to pętla while, czyli pętla warunkowa działająca dopóty, dopóki zmienna tekst_jawny zawiera jakikolwiek znak. Na uwagę zasługują również wiersze od 43. do 50., w których realizujemy odczyt kolejnych znaków szyfrogramu i złożenie zaszyfrowanego komunikatu.

Kod

Linia 1. def szyfruj podkreślnik plotkowy otwórz nawias okrągły tekst podkreślnik do podkreślnik szyfrowania przecinek klucz zamknij nawias okrągły dwukropek. Linia 2. kratka Krok 1 kropka Usuń spacje i zmień wszystkie litery na wielkie kropka. Linia 3. tekst podkreślnik jawny znak równości cudzysłów cudzysłów kropka join otwórz nawias okrągły otwórz nawias kwadratowy litera kropka upper otwórz nawias okrągły zamknij nawias okrągły for litera in tekst podkreślnik do podkreślnik szyfrowania if litera wykrzyknik znak równości cudzysłów cudzysłów zamknij nawias kwadratowy zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły f cudzysłów Zaszyfrujemy dwukropek otwórz nawias klamrowy tekst podkreślnik jawny zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 6. kratka Krok 2 kropka Sprawdź i zapamiętaj liczbę znaków do szyfrowania kropka. Linia 7. liczba podkreślnik znakow znak równości len otwórz nawias okrągły tekst podkreślnik jawny zamknij nawias okrągły. Linia 8. plotek znak równości otwórz nawias kwadratowy otwórz nawias kwadratowy cudzysłów cudzysłów for podkreślnik in range otwórz nawias okrągły klucz zamknij nawias okrągły zamknij nawias kwadratowy for podkreślnik in range otwórz nawias okrągły liczba podkreślnik znakow zamknij nawias okrągły zamknij nawias kwadratowy. Linia 9. print otwórz nawias okrągły f cudzysłów Płotek wygenerowany dwukropek otwórz nawias klamrowy plotek zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 10. for wiersz podkreślnik plotka in plotek dwukropek. Linia 11. print otwórz nawias okrągły wiersz podkreślnik plotka zamknij nawias okrągły. Linia 13. kratka Krok 3 kropka Umieść tekst jawny w tablicy dwuwymiarowej kropka. Linia 14. kratka flaga kierunek znak równości 1 minus wypełniamy płotek w dół. Linia 15. kratka flaga kierunek znak równości minus 1 minus wypełniamy płotek w górę. Linia 17. kierunek znak równości 1 kratka rozpoczynamy wypełnianie z góry na dół. Linia 18. znak znak równości 0 kratka indeks sprawdzanego znaku. Linia 19. wiersz znak równości 0 kratka nr wiersza. Linia 20. while tekst podkreślnik jawny dwukropek. Linia 21. znak podkreślnik tekstu znak równości tekst podkreślnik jawny otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kratka pierwszy znak. Linia 22. print otwórz nawias okrągły f cudzysłów znak podkreślnik tekstu znak równości otwórz nawias klamrowy znak podkreślnik tekstu zamknij nawias klamrowy prawy ukośnik kierunek znak równości otwórz nawias klamrowy kierunek zamknij nawias klamrowy prawy ukośnik znak znak równości otwórz nawias klamrowy znak zamknij nawias klamrowy prawy ukośnik wiersz znak równości otwórz nawias klamrowy wiersz zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 23. plotek otwórz nawias kwadratowy znak zamknij nawias kwadratowy otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy znak równości znak podkreślnik tekstu. Linia 24. znak plus znak równości 1. Linia 26. kratka teraz sprawdzamy warunek dla flagi. Linia 27. if wiersz znak równości znak równości klucz minus 1 dwukropek kratka w pythonie indeks zaczynamy liczyć od zera przecinek więc ostatni minus 1. Linia 28. kierunek znak równości minus 1. Linia 29. elif wiersz znak równości znak równości 0 dwukropek. Linia 30. kierunek znak równości 1. Linia 32. kratka teraz w zależności od flagi zwiększamy lub zmniejszamy. Linia 33. wiersz plus znak równości kierunek. Linia 35. kratka pozostawiamy resztę tekstu jawnego do zaszyfrowania. Linia 36. tekst podkreślnik jawny znak równości tekst podkreślnik jawny otwórz nawias kwadratowy 1 dwukropek zamknij nawias kwadratowy kratka reszta jawnego tekstu przecinek bez pierwszego znaku. Linia 37. print otwórz nawias okrągły f cudzysłów plotek znak równości otwórz nawias klamrowy plotek zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 39. kratka Krok 4 kropka Odczytaj zaszyfrowaną wiadomość kropka. Linia 40. for wiersz podkreślnik plotka in plotek dwukropek. Linia 41. print otwórz nawias okrągły wiersz podkreślnik plotka zamknij nawias okrągły. Linia 43. szyfrogram znak równości cudzysłów cudzysłów. Linia 44. for wiersz in range otwórz nawias okrągły klucz zamknij nawias okrągły dwukropek. Linia 45. for wiersz podkreślnik plotka in plotek dwukropek. Linia 46. znak znak równości wiersz podkreślnik plotka otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy. Linia 47. if znak wykrzyknik znak równości cudzysłów cudzysłów dwukropek. Linia 48. print otwórz nawias okrągły znak przecinek end znak równości cudzysłów dwukropek cudzysłów zamknij nawias okrągły. Linia 49. szyfrogram plus znak równości znak. Linia 50. print otwórz nawias okrągły zamknij nawias okrągły. Linia 52. kratka Zwracamy rezultat. Linia 53. return szyfrogram. Linia 56. print otwórz nawias okrągły szyfruj podkreślnik plotkowy otwórz nawias okrągły cudzysłów Fontanna w parku cudzysłów przecinek 5 zamknij nawias okrągły zamknij nawias okrągły.
R1MIVndrkYL5n
Nagranie dźwiękowe.

Krok 1. Usuń spacje i zmień wszystkie litery na wielkie

Rozpocznijmy analizę od efektu działania – widzimy napis FONTANNAWPARKU, zapisany wielkimi literami i bez spacji. Podczas gdy funkcję szyfruj_plotkowy wywołaliśmy, podając jako argument napis zawierający zarówno spacje, jak i małe litery. Zmiana ta została przeprowadzona w wierszu 3. kodu. Zastosowano tu metodę join, używaną dla obiektów tekstowych – w omawianym przypadku obiekt reprezentują dwa cudzysłowy na lewo od kropki po lewej stronie metody. Jej argumentem jest wyrażenie listowe, generujące listę znaków zamienionych na wielkie litery metodą upper na podstawie kolekcji wejściowej, czyli szyfrowanego ciągu znaków. Dzięki zastosowaniu klauzuli if zamieniamy tylko te znaki, które nie są spacją.

Możemy to prześledzić na zrzucie ekranu z aplikacji IDLE. Widzimy kilka poleceń. Pierwszym z nich jest zastosowanie metody join – doklejamy w niej do pustego ciągu tekstowego kolejne elementy z listy.

Widzimy również generator listowy, który iteruje po kolejnych literach napisu. W ten sposób ciąg zamieniany jest na listę pojedynczych znaków. W kolejnym generatorze widzimy użycie metody upper, przeprowadzającej zamianę małych liter na wielkie. Następny generator zawiera klauzulę if, dzięki czemu na wynikowej liście znajdują się elementy spełniające określony w niej warunek. Ostatnie polecenie łączy metodę join z generatorem listowym.

Efekt działania

Linia 1. print otwórz nawias okrągły szyfruj podkreślnik plotkowy otwórz nawias okrągły cudzysłów Fontanna w parku cudzysłów zamknij nawias okrągły zamknij nawias okrągły. Linia 2. kratka Zaszyfrujemy dwukropek FONTANNAWPARKU.

Kod

Linia 1. def szyfruj podkreślnik plotkowy otwórz nawias okrągły tekst podkreślnik do podkreślnik szyfrowania przecinek klucz zamknij nawias okrągły dwukropek. Linia 2. kratka Krok 1 kropka Usuń spacje i zmień wszystkie litery na wielkie. Linia 3. tekst podkreślnik jawny znak równości cudzysłów cudzysłów kropka join otwórz nawias okrągły otwórz nawias kwadratowy litera kropka upper otwórz nawias okrągły zamknij nawias okrągły for litera in tekst podkreślnik do podkreślnik szyfrowania if litera wykrzyknik znak równości cudzysłów cudzysłów zamknij nawias kwadratowy zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły f cudzysłów Zaszyfrujemy dwukropek otwórz nawias klamrowy tekst podkreślnik jawny zamknij nawias klamrowy cudzysłów zamknij nawias okrągły.
RpYPqTD8J4IAV
R14SSomyHAdMN
Nagranie dźwiękowe.

Krok 2. Sprawdź i zapamiętaj liczbę znaków do szyfrowania

W kolejnej części funkcji tworzymy płotek, a więc listę dwuwymiarową, która zawiera tyle list o wielkości klucza, ile jest liter w szyfrowanym napisie.

Ponownie spójrzmy na zrzut ekranu z aplikacji IDLE. Widzimy kilka poleceń. Pierwszym z nich jest generator listowy. Ma on składnię analogiczną do pętli iteracyjnej for. Pamiętajmy, że w przypadku generatora listowego nie korzystamy z metody append dodającej nowe elementy do listy. Dodatkowo za słowem kluczowym for występuje znak podkreślenia – w języku Python używamy go do oznaczenia niepotrzebnej zmiennej. W kolejnym poleceniu mamy ten sam generator listowy, lecz zamiast podkreślenia znajduje się tu zmienna x, a wynik otrzymujemy identyczny. Wynika z tego, że zmienna ta nie wpływa na wynik. Widzimy również złożenie jednego generatora listowego w drugim, dzięki czemu tworzona jest lista dwuwymiarowa. Ostatnie wywołanie to standardowa pętla iteracyjna, w której wyświetlamy kolejne elementy listy dwuwymiarowej – są to po prostu listy.

RmqNAS4M9QAio

Zwróć uwagę na to, że w przypadku programu generator listowy wypełnia listę nie literami x, a znakami spacji.

Kod

Linia 1. kratka Krok 2 kropka Sprawdź i zapamiętaj liczbę znaków do szyfrowania. Linia 2. liczba podkreślnik znakow znak równości len otwórz nawias okrągły tekst podkreślnik jawny zamknij nawias okrągły. Linia 3. plotek znak równości otwórz nawias kwadratowy otwórz nawias kwadratowy cudzysłów cudzysłów for podkreślnik in range otwórz nawias okrągły klucz zamknij nawias okrągły zamknij nawias kwadratowy for podkreślnik in range otwórz nawias okrągły liczba podkreślnik znakow zamknij nawias okrągły zamknij nawias kwadratowy. Linia 4. print otwórz nawias okrągły f cudzysłów Płotek wygenerowany dwukropek otwórz nawias klamrowy plotek zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 5. for wiersz podkreślnik plotka in plotek dwukropek. Linia 6. print otwórz nawias okrągły wiersz podkreślnik plotka zamknij nawias okrągły.

Efekt działania

Linia 1. Płotek wygenerowany dwukropek otwórz nawias kwadratowy otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy zamknij nawias kwadratowy. Linia 3. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 4. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 5. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 6. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 7. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 8. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 9. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 10. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 11. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 12. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 13. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 14. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 15. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 16. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy.
Rxwk45RMZbiJs
Nagranie dźwiękowe.

Krok 3. Umieść tekst jawny w tablicy dwuwymiarowej

Pobieramy kolejne znaki z tekstu do zaszyfrowania (widoczne jest to w wierszu 8.) i zgodnie z zasadą płotka przypisujemy je do odpowiednich elementów listy dwuwymiarowej (wiersz 10.). Następnie w wierszach od 14. do 17. sprawdzamy, jak zmienić flagę kierunek określającą, czy kolejna litera ma być poniżej czy powyżej poprzedniej. Warte uwagi rozwiązanie zastosowane jest w wierszu 23. Do zmiennej przypisujemy kolejną zmienną, lecz odwołujemy się do niej jak do listy, używając metody wycinków. Sposób działania tego mechanizmu widzimy na zrzucie z aplikacji IDLE: do zmiennej tekstowej przypisujemy wartość – słowo Adam. Za pomocą funkcji id sprawdzamy jej identyfikator, a następnie przypisujemy do niej wycinek wszystkich znaków: począwszy od indeksu 1 do końca. W ten sposób odcinamy pierwszy znak mający indeks 0. Widzimy nową wartość oraz identyfikator, który jest różny od poprzedniego. Python utworzył zupełnie nową zmienną, mającą jednak tę samą nazwę.

Kod

Linia 1. kratka flaga kierunek znak równości 1 minus wypełniamy płotek w dół. Linia 2. kratka flaga kierunek znak równości minus 1 minus wypełniamy płotek w górę. Linia 4. kierunek znak równości 1 kratka rozpoczynamy wypełnianie z góry na dół. Linia 5. znak znak równości 0 kratka indeks informuj. Linia 6. wiersz znak równości 0 kratka nr wiersza. Linia 7. while tekst podkreślnik jawny dwukropek. Linia 8. znak podkreślnik tekstu znak równości tekst podkreślnik jawny otwórz nawias kwadratowy 0 zamknij nawias kwadratowy kratka pierwszy znak. Linia 9. print otwórz nawias okrągły f cudzysłów znak podkreślnik tekstu znak równości otwórz nawias klamrowy znak podkreślnik tekstu zamknij nawias klamrowy prawy ukośnik kierunek znak równości otwórz nawias klamrowy kierunek zamknij nawias klamrowy prawy ukośnik znak znak równości otwórz nawias klamrowy znak zamknij nawias klamrowy prawy ukośnik wiersz znak równości otwórz nawias klamrowy wiersz zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 10. plotek otwórz nawias kwadratowy znak zamknij nawias kwadratowy otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy znak równości znak podkreślnik tekstu. Linia 11. znak plus znak równości 1. Linia 13. kratka teraz sprawdzamy warunek dla flagi. Linia 14. if wiersz znak równości znak równości klucz minus 1 dwukropek kratka w pythonie indeks zaczynamy liczyć od zera przecinek więc ostatni minus 1. Linia 15. kierunek znak równości minus 1. Linia 16. elif wiersz znak równości znak równości 0 dwukropek. Linia 17. kierunek znak równości 1. Linia 19. kratka teraz w zależności od flagi zwiększamy lub zmniejszamy. Linia 20. wiersz plus znak równości kierunek. Linia 22. kratka pozostawiamy resztę tekstu jawnego do zaszyfrowania. Linia 23. tekst podkreślnik jawny znak równości tekst podkreślnik jawny otwórz nawias kwadratowy 1 dwukropek zamknij nawias kwadratowy kratka reszta jawnego tekstu przecinek bez pierwszego znaku. Linia 24. print otwórz nawias okrągły f cudzysłów plotek znak równości otwórz nawias klamrowy plotek zamknij nawias klamrowy cudzysłów zamknij nawias okrągły.
R2aXfgr1OGTFp
RtxmSbcWIDwYP
Nagranie dźwiękowe.

Litery zostały rozmieszczone na płotku. Zauważmy, że litera F umieszczona jest w pierwszym wierszu, a więc w pierwszej wewnętrznej liście w strukturze dwuwymiarowej listy. Następnie widzimy, w których miejscach w kolejnych listach są umieszczane inne litery. Flaga kierunek zmienia swój znak w momencie, kiedy dochodzimy do końca list i płotek zawraca. Przeanalizuj kod programu i jego efekty.

Efekt działania

Linia 1. znak podkreślnik tekstu znak równości F prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 0 prawy ukośnik wiersz znak równości 0. Linia 2. plotek znak równości otwórz nawias kwadratowy. Linia 3. otwórz nawias kwadratowy apostrof F apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 4. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 5. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 6. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 7. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 8. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 9. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 10. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 11. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 12. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 13. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 14. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 15. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 16. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy zamknij nawias kwadratowy. Linia 17. znak podkreślnik tekstu znak równości O prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 1 prawy ukośnik wiersz znak równości 1. Linia 18. znak podkreślnik tekstu znak równości N prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 2 prawy ukośnik wiersz znak równości 2. Linia 19. znak podkreślnik tekstu znak równości T prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 3 prawy ukośnik wiersz znak równości 3. Linia 20. znak podkreślnik tekstu znak równości A prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 4 prawy ukośnik wiersz znak równości 4. Linia 21. znak podkreślnik tekstu znak równości N prawy ukośnik kierunek znak równości minus 1 prawy ukośnik znak znak równości 5 prawy ukośnik wiersz znak równości 3. Linia 22. znak podkreślnik tekstu znak równości N prawy ukośnik kierunek znak równości minus 1 prawy ukośnik znak znak równości 6 prawy ukośnik wiersz znak równości 2. Linia 23. znak podkreślnik tekstu znak równości A prawy ukośnik kierunek znak równości minus 1 prawy ukośnik znak znak równości 7 prawy ukośnik wiersz znak równości 1. Linia 24. znak podkreślnik tekstu znak równości W prawy ukośnik kierunek znak równości minus 1 prawy ukośnik znak znak równości 8 prawy ukośnik wiersz znak równości 0. Linia 25. znak podkreślnik tekstu znak równości P prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 9 prawy ukośnik wiersz znak równości 1. Linia 26. plotek znak równości otwórz nawias kwadratowy. Linia 27. otwórz nawias kwadratowy apostrof F apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 28. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof O apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 29. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 30. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof T apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 31. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof A apostrof zamknij nawias kwadratowy przecinek. Linia 32. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 33. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 34. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof A apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 35. otwórz nawias kwadratowy apostrof W apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 36. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof P apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 37. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 38. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 39. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy przecinek. Linia 40. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy zamknij nawias kwadratowy. Linia 41. znak podkreślnik tekstu znak równości A prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 10 prawy ukośnik wiersz znak równości 2. Linia 42. znak podkreślnik tekstu znak równości R prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 11 prawy ukośnik wiersz znak równości 3. Linia 43. znak podkreślnik tekstu znak równości K prawy ukośnik kierunek znak równości 1 prawy ukośnik znak znak równości 12 prawy ukośnik wiersz znak równości 4. Linia 44. znak podkreślnik tekstu znak równości U prawy ukośnik kierunek znak równości minus 1 prawy ukośnik znak znak równości 13 prawy ukośnik wiersz znak równości 3.
R5NQ2414mVDOE
Nagranie dźwiękowe.

Krok 4. Odczytaj zaszyfrowaną wiadomość

Widzimy cały płotek i rozmieszczone w nim litery. Aby otrzymać ten efekt, stosujemy pętlę iteracyjną.

Kod

Linia 1. kratka Krok 4 kropka Odczytaj zaszyfrowaną wiadomość kropka. Linia 2. for wiersz podkreślnik plotka in plotek dwukropek. Linia 3. print otwórz nawias okrągły wiersz podkreślnik plotka zamknij nawias okrągły.

Efekt działania

Linia 1. otwórz nawias kwadratowy apostrof F apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 2. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof O apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 3. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 4. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof T apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 5. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof A apostrof zamknij nawias kwadratowy. Linia 6. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 7. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof N apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 8. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof A apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 9. otwórz nawias kwadratowy apostrof W apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 10. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof P apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 11. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof A apostrof przecinek apostrof apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 12. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof R apostrof przecinek apostrof apostrof zamknij nawias kwadratowy. Linia 13. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof K apostrof zamknij nawias kwadratowy. Linia 14. otwórz nawias kwadratowy apostrof apostrof przecinek apostrof apostrof przecinek apostrof apostrof przecinek apostrof U apostrof przecinek apostrof apostrof zamknij nawias kwadratowy.
RF4G0xpAzNRyI
Nagranie dźwiękowe.

Krok 5. Zbuduj zaszyfrowaną wiadomość i zwróć ją

Używamy kolejnych indeksów w zależności od klucza, a więc drugiego parametru funkcji. W ten sposób sprawdzamy we wszystkich listach wewnętrznych płotka, czy na kolejnej pozycji znajduje się znak inny niż spacja. Jeśli tak, wypisujemy ten znak na ekranie, stosując dodatkowy parametr funkcji print o nazwie end – przypisujemy mu znak dwukropka. Wówczas w pętli wszystkie znaki znajdujące się na danym indeksie będą wypisane w jednej linii. Dodatkowo dodajemy ten znak do zmiennej szyfrogram, którą zwracamy za pomocą słowa kluczowego return na końcu funkcji. W ten sposób uzyskujemy zaszyfrowany tekst. Na zrzucie ekranu z aplikacji IDLE znajduje się wywołanie pełnej funkcji z usuniętymi pewnymi funkcjami print. Widzimy tu strukturę listy dwuwymiarowej i rozmieszczenie liter.

Kod

Linia 1. szyfrogram znak równości cudzysłów cudzysłów. Linia 2. for wiersz in range otwórz nawias okrągły klucz zamknij nawias okrągły dwukropek. Linia 3. for wiersz podkreślnik plotka in plotek dwukropek. Linia 4. znak znak równości wiersz podkreślnik plotka otwórz nawias kwadratowy wiersz zamknij nawias kwadratowy. Linia 5. if znak wykrzyknik znak równości cudzysłów cudzysłów dwukropek. Linia 6. print otwórz nawias okrągły znak przecinek end znak równości cudzysłów dwukropek cudzysłów zamknij nawias okrągły. Linia 7. szyfrogram plus znak równości znak. Linia 8. print otwórz nawias okrągły zamknij nawias okrągły. Linia 10. kratka Zwracamy rezultat. Linia 11. return szyfrogram.

Efekt działania

Linia 1. F dwukropek W dwukropek. Linia 2. O dwukropek A dwukropek P dwukropek. Linia 3. N dwukropek N dwukropek A dwukropek. Linia 4. T dwukropek N dwukropek R dwukropek U dwukropek. Linia 5. A dwukropek K dwukropek. Linia 6. FWOAPNNATNRUAK.
R11GB2dTjC7wq
Głośność lektora
Głośność muzyki
Polecenie 2

Zaszyfruj metodą płotkową tekst Hic‑sunt‑leones, używając klucza o wartości 3. Korzystaj z rozwiązania przedstawionego w prezentacji.

Specyfikacja problemu:

Dane:

  • slowo – łańcuch znaków do zaszyfrowania

  • klucz – liczba naturalna; klucz szyfru

Wynik:

  • szyfr – zaszyfrowany łańcuch znaków

    RBQgYZDRz6N6c
    xx

Polecenie 3
RByhBDp8VRFE7
Wymyśl pytanie na kartkówkę związane z tematem materiału.