P ython p rogramming e xercises


E X E R C I S E # 4 1 : R O T 1 3 E N C R Y P T I O N



Yüklə 1,51 Mb.
Pdf görüntüsü
səhifə104/124
tarix14.05.2023
ölçüsü1,51 Mb.
#113537
1   ...   100   101   102   103   104   105   106   107   ...   124
PythonProgrammingExercisesGentlyExplained

E X E R C I S E # 4 1 : R O T 1 3 E N C R Y P T I O N
rot13('Hello, world!')
→ 
'Uryyb, jbeyq!' 
rot13('Uryyb, jbeyq!')
→ 
'Hello, world!' 
ROT 13 is a simple encryption cipher. The name ―ROT 13‖ is short for ―rotate 13.‖ It encrypts by 
replacing letters with letters that appear 13 characters down the alphabet: A is replaced with N, B is 
replaced with O, C is replaced with P, and so on. If this rotation of 13 letters goes passed the end of 
the alphabet, it ―wraps around‖ the Z and continues from the start of the alphabet. Thus, X is 
replaced with K, Y is replaced with L, Z is replaced with M, and so on. Non-letter characters are left 
unencrypted. 
The benefit of ROT 13 is that you can decrypt the encrypted text by running it through ROT 13 
encryption again. This rotates the letter 26 times, returning us to the original letter. So ―Hello, world!‖ 
encrypts to ―Uryyb, jbeyq!‖ which in turn encrypts to ―Hello, world!‖ There is no decryption 
algorithm; you decrypt encrypted text by encrypting it again. The ROT 13 algorithm isn’t secure for 
real-world cryptography. But it can be used to obfuscate text to prevent spoiling joke punch lines or 
puzzle solutions. 
The following shows what each of the 26 letters encrypts to with ROT 13 once (from the top 
row to the middle row) and twice (from the middle row to the bottom row.) 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
Exercise Description 
Write a rot13() function with a text parameter that returns the ROT 13 encrypted version of 
text
. Uppercase letters encrypt to uppercase letters and lowercase letters encrypt to lowercase letters. 
For example, 'HELLO, world!' encrypts to 'URYYB, jbeyq!' and 'hello, WORLD!' 
encrypts to 'uryyb, JBEYQ!'. 
You may use the following Python functions and string methods as part of your solution: ord(), 
chr()
, isalpha(), islower(), and isupper(). 
These Python assert statements stop the program if their condition is False. Copy them to 


Python Programming Exercises, Gently Explained 
128 
the bottom of your solution program. Your solution is correct if the following assert statements’ 
conditions are all True: 
assert rot13('Hello, world!') == 'Uryyb, jbeyq!' 
assert rot13('Uryyb, jbeyq!') == 'Hello, world!' 
assert rot13(rot13('Hello, world!')) == 'Hello, world!' 
assert rot13('abcdefghijklmnopqrstuvwxyz') == 'nopqrstuvwxyzabcdefghijklm' 
assert rot13('ABCDEFGHIJKLMNOPQRSTUVWXYZ') == 'NOPQRSTUVWXYZABCDEFGHIJKLM' 
Try to write a solution based on the information in this description. If you still have trouble 
solving this exercise, read the Solution Design and Special Cases and Gotchas sections for 
additional hints. 
Prerequisite concepts: strings, ord(), chr(), for loops, Boolean operators, islower(), 
isupper()
, augmented assignment operators 

Yüklə 1,51 Mb.

Dostları ilə paylaş:
1   ...   100   101   102   103   104   105   106   107   ...   124




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin