1.5.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 | #! /usr/bin/env python
# -*- 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
u_tekst = raw_input("Podaj ciąg do zaszyfrowania:\n")
print "Ciąg zaszyfrowany:\n", szyfruj(u_tekst)
|
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 mogą być 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.5.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: | 2017-09-08 o 19:38 w Sphinx 1.4.5 |
---|---|
Autorzy: | Patrz plik “Autorzy” |