2016-10-20 2 views
1

Я работаю над своей программой Cesar 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) 
+2

Вы должны вызвать вашу функцию. – chepner

+0

Прошу прощения, я не совсем понимаю, можете ли вы подробно рассказать. – busyboybean

+0

И переменная, и функция называются 'message', что вызывает этот конфликт. – Fejs

ответ

0

Не используйте имена повторно. Переименуйте message и key аргументы encrypt на что-то другое.

def encrypt(m, k): 
    ... 

def main(): 
    encrypt(message(), key()) 
0

У вас есть переменные с тем же именем, что и ваши функции, и это вызывает конфликт при его запуске.

Прояснить, какой именно.

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 

т.д.

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