I did some research on SO and am aware that many similar questions have been asked but I couldn't quite get my answer. Anyway, I'm trying to build a library to "encrypt" a string with "Cesar's number" technique which means I have to take the string and replace each letters with another letter X positions away in the alphabet (I hope that makes sense). Here's my code:
from string import ascii_lowercase, ascii_uppercase
def creer_encodeur_cesar(distance):
retour = lambda x: encodeur_cesar(x, distance)
return retour
def encodeur_cesar(string, distance):
tabLowerCase = list(ascii_lowercase)
tabUpperCase = list(ascii_uppercase)
tabString = list(string)
l_encodedStr = []
for char in tabString:
position = 0
if char == " ":
pass
elif char.isupper():
#do something
elif char.islower():
for ctl in range(0, len(tabLowerCase)):
position = ctl
if char == tabLowerCase[ctl]:
if (ctl + distance) > 26:
position = ctl + distance - 25
char = tabLowerCase[position + distance]
l_encodedStr.append(char)
#How to break out of here??
encodedStr = str(l_encodedStr)
return encodedStr
encodeur5 = creer_encodeur_cesar(5)
print(encodeur5("lionel"))
So, in my second elif statement, I want to break once I have successfully found and encrypted a character instead of looping through the whole alphabet. I have tried to use break but it broke out of the main for loop. Not what I want. I saw that I could use try except and raise but I don't quite know how I could do that and is it a good idea?
What's the best way to do this? What are the good practices in this case?
Any help would be appreciated and thanks in advance!
for char in tabString:or this one:for ctl in range(0, len(tabLowerCase)):?breakshould be enough.breakalways exits out of the deepest (nested) loop.for char in string, andfor ctl, char in enumerate(ascii_lowercase).