【问题标题】:Python : Exiting for loop?Python:退出 for 循环?
【发布时间】: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 循环。不是我想要的。我看到我可以使用tryexceptraise,但我不太清楚该怎么做,这是个好主意吗?

最好的方法是什么?在这种情况下有哪些好的做法?

任何帮助将不胜感激,并提前致谢!

【问题讨论】:

  • 你想从哪个循环中跳出来?这个:for char in tabString: 还是这个:for ctl in range(0, len(tabLowerCase)):?
  • for ctl in range(0, len(tabLowerCase)): 一。对不起,我没有更清楚
  • 使用 break 退出循环
  • 只使用break 就足够了。 break 总是退出最深(嵌套)循环。
  • 您可以直接遍历字符串。 for char in stringfor ctl, char in enumerate(ascii_lowercase)

标签: python loops for-loop exit


【解决方案1】:

您可以使用continue 关键字。

来自文档:

>>> for num in range(2, 10):
...     if num % 2 == 0:
...         print "Found an even number", num
...         continue
...     print "Found a number", num
Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9

【讨论】:

  • 但是在什么情况下我的程序会进入else语句呢?什么时候到休息时间?
  • @Gaboik 很抱歉,我在添加输出时粘贴了错误的 sn-p。基本上,您可以在 continue 之后放置只希望在 continue 未执行时才执行的代码。
  • 好的,这更有意义:) 谢谢!
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多