Как запускать цикл, пока я не получу каждую отдельную букву

#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
  

и т.д.