You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
W tym projekcie nauczysz się jak napisać swój własny program szyfrujący którym będzie można wysyłać tajne wiadomości do przyjaciół.
12
+
W tym projekcie nauczysz się jak napisać swój własny program szyfrujący, którym będzie można wysyłać tajne wiadomości do przyjaciół.
13
13
14
14
#Krok 1: Szyfrowanie liter { .activity}
15
15
16
-
Szyfrowanie jest typem tajnego kodu, w którym zamienia się litery tak aby nikt niepożądany nie mógł odczytać wiadomości. Będziemy używać najstarszej i najbardziej znany metody szyfrowania, szyfru Cezara, którego nazwa pochodzi od gościa który nazywał się Juliusz Cezar.
16
+
Szyfrowanie jest typem tajnego kodu, w którym zamienia się litery tak, aby nikt niepożądany nie mógł odczytać wiadomości. Będziemy używać najstarszej i najbardziej znanej metody szyfrowania, szyfru Cezara, którego nazwa pochodzi od gościa, który nazywał się Juliusz Cezar.
17
17
18
-
Zaczyna się od narysowania liter w kole, jak poniżej:
18
+
Zaczyna się od narysowania liter w kole, jak poniżej:
19
19
20
20

21
21
22
-
Aby uzyskać zaszyfrowaną literę, musisz posiadać tajny klucz. W naszym przykładzie użyjmy cyfry 3. Aby zakodować literę 'a' po prostu przesuwasz 3 litery zgodnie z kierunkiem wskazówek zegara, co daje literę 'd':
22
+
Aby uzyskać zaszyfrowaną literę, musisz posiadać tajny klucz. W naszym przykładzie użyjmy cyfry 3. Aby zakodować literę "a" po prostu przesuwasz 3 litery zgodnie z kierunkiem wskazówek zegara, co daje literę "d":
23
23
24
24

25
25
26
26
Aby odszyfrować wiadomość trzeba każdą literę przesunąć z powrotem o 3 miejsca, w przeciwnym kierunku.
27
27
28
28
## Lista zadań { .check}
29
29
30
-
+ Zacznijmy od napisania programu do szyfrowania liter. Uruchom poniższy program i sprawdź czy działa gdy wpiszesz literę 'a':
30
+
+ Zacznijmy od napisania programu do szyfrowania liter. Uruchom poniższy program i sprawdź czy działa, gdy wpiszesz literę "a":
31
31
32
32
```python
33
33
#lista liter do szyfrowania
@@ -39,42 +39,42 @@ Aby odszyfrować wiadomość trzeba każdą literę przesunąć z powrotem o 3 m
39
39
litera = input("Wprowadz litere do zaszyfrowania: ")
40
40
41
41
#znajdz pozycje litery w alfabecie
42
-
#na przyklad 'a' jest na pozycji 0, 'e' jest na pozycji 4, itd.
42
+
#na przyklad "a" jest na pozycji 0, "e" jest na pozycji 4, itd.
43
43
pozycja = alfabet.find(litera)
44
44
45
-
#dodaj tajny klucz aby otrzymac pozycje zaszyfrowanej litery
46
-
# % 26 oznacza 'wroc do 0 kiedy osiagniesz 26'
45
+
#dodaj tajny klucz, aby otrzymac pozycje zaszyfrowanej litery
46
+
# % 26 oznacza "wroc do 0 kiedy osiagniesz 26"
47
47
nowaPozycja = (pozycja + klucz) % 26
48
48
49
49
#zaszyfrowana litera znajduje sie na pozycji nowaPozycja w alfabecie
50
50
zaszyfrowanaLitera = alfabet[nowaPozycja]
51
-
52
-
print("Twoja litera po zaszyfrowaniu to" , zaszyfrowanaLitera)
51
+
52
+
print("Twoja litera po zaszyfrowaniu to " + zaszyfrowanaLitera)
53
53
```
54
54
55
55

56
56
57
57
+ W Pythonie, tekst może być rozumiany jako wiele pojedynczych liter złączonych razem (nazywanych _tablicą_ znaków)
58
58
59
-
```python
59
+
```python
60
60
pozycja = alfabet.find(litera)
61
61
```
62
62
63
-
znajduje pozycję znaku w `alfabecie`. W większości języków programowania pozycje zawsze zaczynają się od 0 a nie od 1, więc w tekście "abcdefghijklmnopqrstuvwxyz", 'a' jest na pozycji 0, 'b' jest na pozycji 1 i tak dalej.
63
+
znajduje pozycję znaku w `alfabecie`. W większości języków programowania pozycje zawsze zaczynają się od 0 a nie od 1, więc w tekście "abcdefghijklmnopqrstuvwxyz", "a" jest na pozycji 0, "b" jest na pozycji 1 i tak dalej.
64
64
65
65

66
66
67
-
Następnie, tajny klucz jest dodany do `pozycji`, przez co otrzymujemy `nowaPozycje` zaszyfrowanej litery. W naszym przykładzie, 'a' jest na pozycji 0, więc po dodaniu tajnego klucza mamy `0 + 3 = 3`.
68
-
69
-
Kod `% 26` oznacza, że podczas szukania numeru pozycji zaszyfrowanej litery, numer jest cofany do 0 jeśli osiągnie wartość 26. To oznacza że litera 'z' w naszym kodzie jest tak jakby na pozycji przy literze 'a'.
70
-
71
-
Następnie, używamy obliczonego numeru nowej pozycji do znalezienia zakodowanej litery w `alfabecie` i wyświetlenia jej na ekranie.
67
+
Następnie tajny klucz jest dodany do `pozycji`, przez co otrzymujemy `nowaPozycje` zaszyfrowanej litery. W naszym przykładzie, "a" jest na pozycji 0, więc po dodaniu tajnego klucza mamy `0+3 = 3`.
68
+
69
+
Kod `%26` oznacza, że podczas szukania numeru pozycji zaszyfrowanej litery, numer jest cofany do 0 jeśli osiągnie wartość 26. To oznacza że litera "z" w naszym kodzie jest tak jakby na pozycji przy literze "a".
70
+
71
+
Następnie, używamy obliczonego numeru nowej pozycji do znalezienia zakodowanej litery w `alfabecie` i wyświetlenia jej na ekranie.
72
72
73
73
```python
74
74
alfabet[nowaPozycja]
75
75
```
76
76
77
-
wyszukuje literę na danej pozycji, dlatego `alfabet[0]` wynosi 'a', `alfabet[3]` wynosi 'd'.
77
+
wyszukuje literę na danej pozycji, dlatego `alfabet[0]`to "a", `alfabet[3]`to "d".
78
78
79
79
Zauważ też, że w programie skorzystaliśmy z krótszej wersji wczytywania komend użytkownika. Zamiast napisać:
80
80
@@ -89,11 +89,11 @@ Aby odszyfrować wiadomość trzeba każdą literę przesunąć z powrotem o 3 m
89
89
litera =input("Wprowadz litere do zaszyfrowania: ")
90
90
```
91
91
92
-
+ Możesz użyć tego samego programu do odszyfrowania litery przez użycie klucza `-3` zamiast `3`. To znaczy, że aby odszyfrować literę, poruszasz się w odwrotnym kierunku po alfabecie, wracając do 'z' po 'a'.
92
+
+ Możesz użyć tego samego programu do odszyfrowania litery przez użycie klucza `-3` zamiast `3`. To znaczy, że aby odszyfrować literę, poruszasz się w odwrotnym kierunku po alfabecie, wracając do "z" po "a".
93
93
94
94

95
95
96
-
Jeśli wolisz mieć osobne programy do szyfrowania i odszyfrowania, po prostu zamień kod powyżej tak aby poruszał się wstecz po alfabecie:
96
+
Jeśli wolisz mieć osobne programy do szyfrowania i odszyfrowania, po prostu zamień kod powyżej tak, aby poruszał się wstecz po alfabecie:
97
97
98
98
```python
99
99
#odejmij wartosc klucza aby sie cofnac
@@ -102,31 +102,31 @@ Aby odszyfrować wiadomość trzeba każdą literę przesunąć z powrotem o 3 m
102
102
103
103
## Zapisz Swój Projekt {.save}
104
104
105
-
## Wyzwanie: Zmienne klucze {.challenge}
105
+
## Wyzwanie: Zmienne klucze {.challenge}
106
106
Zmodyfikuj swój program szyfrujący tak, żeby użytkownik mógł wprowadzić swoją wartość klucza. Wczytaj dane wpisywane przez użytkownika i zapisać je do zmiennej `klucz`. Pamiętaj o użyciu funkcji `int()` do zamiany wczytanych danych na liczbę.
107
107
108
108
## Zapisz Swój Projekt {.save}
109
109
110
-
## Wyzwanie: Zaszyfruj i odszyfruj litery {.challenge}
110
+
## Wyzwanie: Zaszyfruj i odszyfruj litery {.challenge}
111
111
+ Użyj swojego programu do zaszyfrowania:
112
-
+ Litery 'd', korzystając z klucza 7;
113
-
+ Litery 'x', korzystając z klucza 4;
112
+
+ Litery "d", korzystając z klucza 7;
113
+
+ Litery "x", korzystając z klucza 4;
114
114
+ Czy z pomocą twojego programu możesz odszyfrować tą wiadomość:
115
115
+ oqlmd (tajny klucz wynosi 12)
116
116
117
117
## Zapisz Swój Projekt {.save}
118
118
119
-
#Step 2: Szyfrowanie wiadomości { .activity}
119
+
#Krok 2: Szyfrowanie wiadomości { .activity}
120
120
121
121
Zamiast szyfrować i odszyfrowywać wiadomości litera po literze, napiszmy program który będzie sam szyfrował i odszyfrowywał całe wiadomości!
122
122
123
123
## Lista Zadań { .check}
124
124
125
125
+ Do tej pory korzystaliśmy z pętli do wykonania kodu:
126
-
+ określoną ilość razy;
126
+
+ określoną liczbę razy,
127
127
+ do momentu aż coś się stanie w programie.
128
128
129
-
Jest jeszcze jedna metoda korzystania z pętli, polegająca na powtarzaniu wykonania kodu dla każdego elementu w zbiorze danych. Na przykład, jeśli chcesz wyświetlić każdą literę w czyimś imieniu poprzez wyświetlenie każdej z liter po kolei:
129
+
Jest jeszcze jedna metoda korzystania z pętli polegająca na powtarzaniu wykonania kodu dla każdego elementu w zbiorze danych. Na przykład, jeśli chcesz wyświetlić każdą literę w czyimś imieniu poprzez wyświetlenie każdej z liter po kolei:
130
130
131
131
```python
132
132
imie =input("Jak masz na imie? ")
@@ -155,29 +155,29 @@ Zamiast szyfrować i odszyfrowywać wiadomości litera po literze, napiszmy prog
155
155
#wczytaj klucz
156
156
klucz =input("Podaj klucz: ")
157
157
#ta akcja jest potrzebna aby miec pewnosc ze program wczytal klucz jako liczbe
158
-
klucz = int(klucz)
158
+
klucz =int(klucz)
159
159
160
160
#wykonaj petle na kazdej literze w wiadomosci
161
161
for litera in wiadomosc:
162
162
163
163
if litera in alfabet:
164
-
165
-
#znajdz pozycje litery w alfabecie
166
-
#na przyklad 'a' jest na pozycji 0, 'e' jest na pozycji 4, itd.
164
+
165
+
#znajdz pozycje litery w alfabecie
166
+
#na przyklad "a" jest na pozycji 0, "e" jest na pozycji 4, itd.
167
167
pozycja = alfabet.find(litera)
168
-
169
-
#dodaj tajny klucz aby otrzymac pozycje zaszyfrowanej litery
170
-
# % 26 oznacza 'wroc do 0 kiedy osiagniesz 26'
171
-
nowaPozycja = (pozycja + klucz) % 26
172
-
168
+
169
+
#dodaj tajny klucz aby otrzymac pozycje zaszyfrowanej litery
170
+
# % 26 oznacza "wroc do 0 kiedy osiagniesz 26"
171
+
nowaPozycja = (pozycja + klucz) %26
172
+
173
173
#dolacz zaszyfrowana litere do wiadomosci
174
174
#zaszyfrowana litera znajduje sie na pozycji nowaPozycja w alfabecie
@@ -187,12 +187,12 @@ Zamiast szyfrować i odszyfrowywać wiadomości litera po literze, napiszmy prog
187
187
188
188
W tym programie każda litera w wiadomości jest szyfrowana po kolei i dołączana do zmiennej `zaszyfrowanaWiadomosc`. Na końcu programu wyświetlana jest cała wiadomość.
189
189
190
-
Istnieją litery które mogą być wprowadzone przez użytkownika, a które nie znajdują się w naszym `alfabecie`. Na przykład: spacje, przecinki, znaki zapytania jak i polskie znaki takie jak ą i ę. Wyrażenie `if litera in alfabet` oznacza że tylko litery które pojawiają się w alfabecie są szyfrowane. Inne znaki są po prostu dołączane, bez szyfrowania.
190
+
Istnieją litery, które mogą być wprowadzone przez użytkownika, a które nie znajdują się w naszym `alfabecie`. Na przykład: spacje, przecinki, znaki zapytania jak i polskie znaki takie jak ą i ę. Wyrażenie `if litera in alfabet` oznacza że tylko litery, które pojawiają się w `alfabecie` są szyfrowane. Inne znaki są po prostu dołączane, bez szyfrowania.
191
191
192
192
## Zapisz Swój Projekt {.save}
193
193
194
194
## Wyzwanie: Szyfrowanie i odszyfrowanie wiadomości { .challenge}
195
-
Zaszyfruj pewne wiadomości i przekaż je koledze/koleżance razem z tajnym kluczem. Sprawdź czy mogą ją odszyfrować ich programem.
195
+
Zaszyfruj pewne wiadomości i przekaż je koledze/koleżance razem z tajnym kluczem. Sprawdź czy mogą je odszyfrować ich programem.
196
196
197
197
## Zapisz Swój Projekt {.save}
198
198
@@ -205,12 +205,12 @@ Czy da się odszyfrować twoją wiadomość bez klucza? Czy możesz zmienić sw
205
205
206
206
## Zapisz Swój Projekt {.save}
207
207
208
-
## Wyzwanie: Kalkulator Miłości { .challenge}
209
-
Napisz program który pokazuje jak zgodne są 2 osoby przez obliczenie ilości punktów zgodności.
208
+
## Wyzwanie: Kalkulator miłości { .challenge}
209
+
Napisz program, który pokazuje jak zgodne są 2 osoby przez obliczenie ilości punktów zgodności.
210
210
211
211

212
212
213
-
Program może przetwarzać kolejne litery z 2 imion i dodawać punkty do zmiennej `punkty`za każdym razem kiedy program znajdzie pewne litery. Ty możesz zdecydować na jakich zasadach będą liczone punkty. Na przykład, możesz dodawać punkty za samogłoski, albo za litery występujące w słowie "kocha":
213
+
Program może analizować kolejne litery z 2 imion i za każdym razem kiedy program znajdzie pewne litery dodawać punkty do zmiennej `punkty`. Możesz sam zdecydować na jakich zasadach będą liczone punkty. Na przykład, możesz dodawać punkty za samogłoski, albo za litery występujące w słowie "kocha":
0 commit comments