2016-02-21 4 views
2

Я провел некоторое исследование по SO, и я знаю, что многие подобные вопросы были заданы, но я не мог получить свой андерсер. Во всяком случае, я пытаюсь создать библиотеку, чтобы «зашифровать» строку с помощью метода номера «Цезарь», означающего, что мне нужно взять строку и заменить каждую букву на другую букву X в алфавите (я надеюсь, что это имеет смысл) , Вот мой код:Python: Выход из цикла?

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")) 

Таким образом, в своем втором заявлении Элифа, я хочу сломать однажды я нашел и успешно зашифрован символ вместо зацикливания корыта всего алфавита. Я попытался использовать break, но он вырвался из основного цикла. Не то, что я хочу. Я видел, что могу использовать tryexcept и raise, но я не совсем понимаю, как я мог это сделать, и это хорошая идея?

Каков наилучший способ для этого? Каковы хорошие практики в этом случае?

Любая помощь будет оценена и благодарна заранее!

+0

, из которого петли вы хотите вырваться из? Этот: 'для char в tabString:' или this: 'для ctl в диапазоне (0, len (tabLowerCase)):'? –

+0

для ctl в диапазоне (0, len (tabLowerCase)): один. Извините, я не был более ясен. – Gaboik

+0

Использовать break для выхода из цикла – tinySandy

ответ

4

Ключевое слово 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 
+0

Но при каких условиях моя программа будет вводить оператор else? Когда он достигнет перерыва? – Gaboik

+0

@Gaboik Мне очень жаль, я приклеил неправильный фрагмент, когда я добавил вывод. В принципе, вы можете поместить код после продолжения, который вы хотите выполнить только в том случае, если continue не будет выполнен. – wpercy

+0

Хорошо, что имеет смысл :) Спасибо! – Gaboik

Смежные вопросы