#python #loops
#python #циклы
Вопрос:
Я работаю над своей программой Caesar Cipher, и я сталкиваюсь с проблемой, когда пытаюсь зашифровать свое сообщение. Ошибка заключается в том, что «функция не может быть повторена». Итак, в принципе, я хочу запускать цикл for до тех пор, пока он не пройдет через все буквы в строке.
def message():
message = input("Enter your message here: ").upper()
return message
def key():
while True:
key = int(input("Enter your shift or key between the numbers of 1-26: "))
if key >=1 and key<=26:
return key
def encrypt(message, key):
output = []
for symb in message:
numbers = ord(symb) 90 - key
output.append(numbers)
print(output)
Комментарии:
1. Вы должны вызвать свою функцию.
2. Извините, я не совсем понимаю, не могли бы вы уточнить, пожалуйста.
3. Вызываются как переменная, так и функция
message
, что вызывает этот конфликт.4. Я. спасибо за совет, это сработало
5. На Python
key >=1 and key<=26
написано лучше1 <= key <= 26
.
Ответ №1:
Не используйте имена повторно. Переименуйте message
и key
аргументы encrypt
во что-нибудь другое.
def encrypt(m, k):
...
def main():
encrypt(message(), key())
Ответ №2:
У вас есть переменные с тем же именем, что и у ваших функций, и это вызывает конфликт при его запуске.
Проясните, что есть что.
def message():
msg = input("Enter your message here: ").upper()
return msg
def key():
while True:
k = int(input("Enter your shift or key between the numbers of 1-26: "))
if k >=1 and k <=26:
return k
и т.д.