【发布时间】:2016-02-21 18:12:57
【问题描述】:
我对 SO 进行了一些研究,并且知道有人提出了许多类似的问题,但我无法完全得到我的答案。无论如何,我正在尝试建立一个库来用“Cesar's number”技术“加密”一个字符串,这意味着我必须取出字符串并将每个字母替换为字母表中的另一个字母 X 位置(我希望这是有道理的) .这是我的代码:
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"))
所以,在我的第二个 elif 语句中,我想在成功找到并加密一个字符后中断,而不是在整个字母表中循环。我曾尝试使用break,但它脱离了主 for 循环。不是我想要的。我看到我可以使用tryexcept和raise,但我不太清楚该怎么做,这是个好主意吗?
最好的方法是什么?在这种情况下有哪些好的做法?
任何帮助将不胜感激,并提前致谢!
【问题讨论】:
-
你想从哪个循环中跳出来?这个:
for char in tabString:还是这个:for ctl in range(0, len(tabLowerCase)):? -
for ctl in range(0, len(tabLowerCase)): 一。对不起,我没有更清楚
-
使用 break 退出循环
-
只使用
break就足够了。break总是退出最深(嵌套)循环。 -
您可以直接遍历字符串。
for char in string和for ctl, char in enumerate(ascii_lowercase)。
标签: python loops for-loop exit