У меня есть этот код Цезаря в Python, чтобы быстро зашифровать некоторые сообщения и показать его моим одноклассникам.
У меня все сделано, кроме чего-то .
Я хочу сделать ‘Вы хотите зашифровать другое сообщение?’ вариант, но я не могу зациклить код.
Как я могу зациклить весь код? Я использую Python 3.5.1.
print(‘QuantumShadow’s Caesar Cipher’) message = input(‘Write your message here: ‘) print(‘The encryption key is: ‘) key = int(input()) print(‘Do you want to encrypt or decrypt?’) mode = input() LETTERS = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ translated = » message = message.upper() for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) if mode == ‘encrypt’: num = num + key elif mode == ‘decrypt’: num = num — key if num >= len(LETTERS): num = num — len(LETTERS) elif num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print(translated) print(‘Do you want to encrypt\decrypt another message?’) print(‘Here is where I want to make the loop’) print(‘Coded with Python by QuantumShadow.’)
QuantumShadow 28 Мар 2016 в 04:23
6 ответов
Лучший ответ
Один из способов сделать это — использовать цикл while, который продолжается вечно (до тех пор, пока вы не выйдете из него):
Python-джедай #7 — Циклы
while True: # The rest of your code if not input(«Do you want to encrypt or decrypt another message [y/n]? «).lower().startswith(«y»): break print(«Coded with Python by QuantumShadow.»)
APerson 29 Мар 2016 в 01:00
print(‘QuantumShadow’s Caesar Cipher’) LETTERS = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ #Wrap your code def get_message(): message = input(‘Write your message here: (input q to quit)’) if message == ‘q’: return message print(‘The encryption key is: ‘) key = int(input()) print(‘Do you want to encrypt or decrypt?’) mode = input() translated = » message = message.upper() for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) if mode == ‘encrypt’: num = num + key elif mode == ‘decrypt’: num = num — key if num >= len(LETTERS): num = num — len(LETTERS) elif num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol return translated #loop your code while True: message = get_message() if message == ‘q’: break print (message)
gavinsun 28 Мар 2016 в 02:09
Простейшим способом было бы поместить весь код в цикл «во время выполнения», и в конце цикла спросить, хочет ли человек снова выполнить код, если нет, изменить запуск на False.
print(«Hello World!»)
running = True while running: print(«Hello World!») answer = input(«Would you like to run again? (y/N)») if answer != ‘y’: running = False
Но правильный способ сделать это — разделить ваш код на функции, чтобы конечный результат был чище и легче для чтения.
HPerin 28 Мар 2016 в 01:33
while True: print(‘QuantumShadow’s Caesar Cipher’) message = input(‘Write your message here: ‘) print(‘The encryption key is: ‘) key = int(input()) print(‘Do you want to encrypt or decrypt?’) mode = input() LETTERS = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ translated = » message = message.upper() for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) if mode == ‘encrypt’: num = num + key elif mode == ‘decrypt’: num = num — key if num >= len(LETTERS): num = num — len(LETTERS) elif num < 0: num = num + len(LETTERS) translated = translated + LETTERS[num] else: translated = translated + symbol print(translated) if input(«Do you want to encrypt or decrypt another message [yes/no]? «) != «yes»: break print(«Coded with Python by QuantumShadow.»)
Также рассмотрите возможность перемещения print(translated) вне цикла for, чтобы программа отображала только окончательный зашифрованный результат.
Python с нуля. Урок 4 | Циклы (for, while)
54 69 6D 28 Мар 2016 в 01:48
После печати строки заголовка запустите цикл while
ask = True while ask: # this was initialized to True message = input(‘Write your message here: ‘) key = int(input(‘The encryption key is: ‘)) mode = input(‘Do you want to encrypt or decrypt?’) # put the coding logic here next = input(‘Do you want to encrypt\decrypt another message?’) if next.lower() == ‘no’: ask = False print(‘You have finished all messages’)
sabbahillel 28 Мар 2016 в 01:38
Поместите этот код над вашим кодом:
x=1 while x==1: Your Code after indent #Add the following lines below x=input(«Press to send another message or any other key to exit»)
Приведенный выше метод является простым и не требует больших изменений в существующем коде. Надеюсь, это поможет!
Источник: question-it.com
Техника и методы циклов в Python
Python имеет определенные встроенные функции, благодаря которым он поддерживает многочисленные методы цикла в нескольких последовательных контейнерах.
Эти функции и методы цикла очень полезны для конкурентного кодирования. Его можно использовать в различных проектах, в которых пользователь должен использовать определенную технику с циклами для поддержания всей структуры программы. Техника и методы зацикливания в Python помогают сэкономить время и пространство памяти, поскольку пользователю не нужно объявлять дополнительные переменные при традиционном подходе к циклам.
Где используются методы зацикливания?
Различные типы циклов используются там, где пользователю не нужно манипулировать структурой кода или порядком целых контейнеров. Вместо этого пользователь должен распечатать элементы для одноразового экземпляра, и в контейнере не происходит никаких изменений на месте. Их также можно использовать для экономии времени и памяти.
Методы цикла с использованием структур данных Python
Рассмотрим следующие методы зацикливания, используемые в Python:
- enumerate(): функция enumerate() используется для перебора контейнеров и для печати номера индекса со значением, присутствующим в этом конкретном индексе.
for key, value in enumerate([‘Joe’, ‘waited’, ‘for’, ‘the’, ‘train’, ‘,’, ‘but’, ‘the’, ‘train’, ‘was’, ‘late’, ‘.’]): print(key, value)
0 Joe 1 waited 2 for 3 the 4 train 5 , 6 but 7 the 8 train 9 was 10 late 11 .
- zip(): функция zip() используется для объединения двух похожих контейнеров, таких как dict с dict или list с list, путем последовательной печати их значений. Цикл будет существовать только после конца наименьшего контейнера.
# first, we will initialize the list question = [‘animal’, ‘shape’, ‘time’] answer = [‘tiger’, ‘square’, ’11 o clock’] # the zip() function will be used for combining these two containers for question, answer in zip(question, answer): print(‘What is this ? this is .’.format(question, answer))
What is this animal? this is tiger. What is this shape? this is square. What is this time? this is 11 o clock.
- items(): функция items() используется для просмотра словаря и последовательной печати ключа и его значений.
dict = < «Joe» : «waited», «for» : «the», «train» : «but», «the» : «train», «was» : «late» ># the use items for print the dictionary key-value pair print(«The key value pair by using items is : «) for a, b in dict.items(): print(a, b)
The key value pair by using items is : Joe waited for the train but the train was late
- sorted(): функция sorted() используется для печати контейнера в отсортированном порядке. Эта функция не сортирует контейнер, но используется, например, для печати контейнера в отсортированном порядке. Пользователь может использовать функцию set() с функцией sorted(), чтобы удалить повторяющееся значение в выводе.
# first, initialize the list list = [ 1 , 4, 6, 7, 1, 2, 4 ] # using sorted() to print the list in sorted order print(«The list in sorted order is : «) for a in sorted(list) : print(a, end = » «) print(«r») # now use the sorted() function and set() function for printing the list in sorted order # use of set() to removes duplicates in output value. print(«The list in sorted order(without duplicates) is : «) for a in sorted(set(list)) : print(a, end = » «)
The list in sorted order is : 1 1 2 4 4 6 7 The list in sorted order(without duplicates) is : 1 2 4 6 7
# initializing list list2 = [‘Joe’, ‘waited’, ‘for’, ‘the’, ‘train’, ‘but’, ‘the’, ‘train’, ‘was’, ‘late’] # now use the sorted() function and set() function for printing the list in sorted order for sentence in sorted(set(list2)): print(sentence)
Joe but for late the train waited was
- reversed(): функция reserved() используется для печати значений контейнера в обратном порядке.
# initializing list list = [ 1 , 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 ] # by using the revered() function for printing the list in reversed order print(«The list in reversed order is : «) for a in reversed(list) : print(a, end = » «)
The list in reversed order is : 21 19 17 15 13 11 9 7 5 3 1
for b in reversed(range(1, 20, 2)): print(b)
19 17 15 13 11 9 7 5 3 1
Заключение
В этом руководстве мы обсудили различные типы техник зацикливания, которые полезны для экономии памяти и времени.
Источник: pythonpip.ru
Как зациклить программу на пайтон
: 8
Как зациклить блок?
Сорри за глупый вопрос. Как сделать так, чтобы после выполнения блока, программа возвращалась бы на первую строчку с выбором. Подозреваю что через while или функцию. Чтобы после выполнения действия мы бы опять возвращались к вводу числа. Например в этом случае:
name = input(«Введите число: «) if name == «1»: print («Введено число «) print(«1») if name == «2»: print («Введено число «) print(«2»)
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.
Особенно для кода на Питоне, там ж отступы не просто для красоты.
Последний раз редактировалось Alex11223; 18.03.2017 в 13:11 .
Источник: www.programmersforum.ru