Write a script that inputs a line of encrypted text and a distance value and out
ID: 3858877 • Letter: W
Question
Write a script that inputs a line of encrypted text and a distance value and outputs plaintext using a Caesar cipher. The script should work for any printable characters.
my code
data = input("Enter text for encryption: ")
dist = int(input("Enter the value for Distance: "))
datum = ""
for cha in data:
val = ord(cha)
cipher_val = (val + dist)
if cipher_val > ord('z'):
cipher_val = ord('a') + dist
datum = datum + chr(cipher_val)
print('Encrypted Text: ')
print(datum)
there is an error saying (UnicodeEncodeError: 'ascii' codec can't encode character 'Å' in position 0: ordinal not in range(128))
Explanation / Answer
Hi this error is coming because cipher_val contains some characters which cannot be understood by ascii i.e. they are not present in ascii table and chr() cannot convert it to any character.
So for this , each character we need to convert to utf-8 using .encode("utf-8").
This error mostly dont occurs in new compilers. In Python 3, default setting of utf-8 is there, sO this error doesn't come.
Even for me I tried different compilers and I am getting the output as below: -
Hope this hint can resolve your issue.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.