1.4.8. Szyfr Cezara¶
ZADANIE: Napisz program, który podany przez użytkownika ciąg znaków szyfruje przy użyciu szyfru Cezara i wyświetla zaszyfrowany tekst.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #! /usr/bin/env python3
# -*- coding: utf-8 -*-
KLUCZ = 3
def szyfruj(txt):
zaszyfrowny = ""
for i in range(len(txt)):
if ord(txt[i]) > 122 - KLUCZ:
zaszyfrowny += chr(ord(txt[i]) + KLUCZ - 26)
else:
zaszyfrowny += chr(ord(txt[i]) + KLUCZ)
return zaszyfrowny
def main(args):
tekst = input("Podaj ciąg do zaszyfrowania:\n")
print("Ciąg zaszyfrowany:\n", szyfruj(tekst))
return 0
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))
|
W programie możemy wykorzystywać zmienne globalne, np. KLUCZ
.
def nazwa_funkcji(argumenty)
– tak definiujemy funkcje, które
mogą lub nie zwracać jakieś wartości.
nazwa_funkcji(argumenty)
– tak wywołujemy funkcje.
Napisy są indeksowane (od 0), co daje dostęp do pojedynczych znaków.
Funkcja len(str)
zwraca długość napisu, wykorzystana jako argument funkcji
range()
pozwala iterować po znakach napisu.
Operator +=
oznacza dodanie argumentu z prawej strony do wartości z lewej.
1.4.8.1. Zadania dodatkowe¶
- Podany kod można uprościć, ponieważ napisy w Pythonie są sekwencjami.
Zatem pętlę odczytującą kolejne znaki można zapisać jako
for znak in tekst:
, a wszystkie wystąpienia notacji indeksowejtxt[i]
zastąpić zmiennąznak
. - Napisz funkcję deszyfrującą
deszyfruj(txt)
. - Dodaj do funkcji
szyfruj() i deszyfruj()
drugi parametr w postaci długości klucza podawanej przez użytkownika. - Dodaj poprawne szyfrowanie dużych liter, obsługę białych znaków i znaków interpunkcyjnych.
Przykład funkcji deszyfrującej:
1 2 3 4 5 6 7 8 9 | def deszyfruj(tekst):
odszyfrowany = ""
KLUCZM = KLUCZ % 26
for znak in tekst:
if (ord(tekst) - KLUCZM < 97):
odszyfrowany += chr(ord(tekst) - KLUCZM + 26)
else:
odszyfrowany += chr(ord(tekst) - KLUCZM)
return odszyfrowany
|
Materiały Python 101
udostępniane przez
Centrum Edukacji Obywatelskiej na licencji
Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowa.
Utworzony: | 2022-05-22 o 19:52 w Sphinx 1.5.3 |
---|---|
Autorzy: | Patrz plik “Autorzy” |