Здравствуйте, только начал изучать Python, не могу понять в чём проблема, при повторном использовании ответ просто дублируется

Скрин кода

может я неправильно использовал конструкцию ?

for i in K:
                    for a in range(len(M)):
                            if i==M[a]:
                                    y+=Z[a]
                                    break

Ответы (1 шт):

Автор решения: Andrei

Дело в том что здесь y+=Z[a] и здесь y+=M[a] Вы добавляете к уже существующим данным еще данные то есть += и в конце операции не сбрасываете переменную y к начальному состоянию и обратно добавляете к ней новые данные. и так по кругу. Должно быть так:

M=['i','l','o','v','e','y','o','u','s','p']
Z=[')','.', '_','=',':','>','?','*','&','$']
K=-1
y=""
while K!=0:
    K=input("Чего пожелаете?\n"
        "1-Зашифровать\n"
        "2-Расшифровать\n"
        "3-Покинуть программу\n"
        "Я не отстану, введи число от 1 до 3 и даже не думай нажимать на крестик!\n")

    if K=="1":
        K=input("Введите строку, которую хотите зашифровать:\n"
        "Доступные символы для написания: \ni l o v e y o u s p\n")
        for i in K:
            for a in range(len(M)):
                if i==M[a]:
                    y+=Z[a]
                    break
    elif K=="2":
        K=input("Введите строку, которую хотите расшифровать:\n"
        "Доступные символы для написания: \n) . _ = : > ? * & $\n")
        for i in K:
            for a in range(len(Z)):
                if i==Z[a]:
                    y+=M[a]
                    break
    elif K=='3':
        break
    else:
        print ("Нет-нет, так не пойдёт, давай от 1 до 3 :)")


    print(y)
    y = ''
→ Ссылка