Проблема с if конструкцией

def easy(utext):
    convert_to_list = list(utext)
    print(convert_to_list)
    lenght = len(convert_to_list)
    s = abc[::-1]
    for i in convert_to_list:
        a = 0
        if convert_to_list[:a] == abc[:a]:
            new_generate_pass = []
            #s = abc[::-1]
            new_generate_pass.append(s[a])
            print (new_generate_pass)
        a = a + 1  
utext = input("Введите ваше слово: ")

Вообщем такая проблема, по задумке когда попадаем в if два списка должны сравнивать свои значения по индексам и если есть одинаковые буквы "а" (к примеру) то должен выполняться код ниже. Но независимо есть совпадения букв или нет он выполняет все что описанно в if


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

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

этот код

a = 0
if convert_to_list[:a] == abc[:a]

означает

if convert_to_list[:0] == abc[:0]

а list[:0] - это список нулевого размера (срез с 0 элемента до 0 элемента НЕ ВКЛЮЧИТЕЛЬНО)

вы ВСЕГДА (a перед проверкой устанавливается в 0) проверяете срезы двух списков, размер которых 0 - конечно же они всегда равны

подозреваю, что ваш код должен был выглядеть так:

a = 0
for i in convert_to_list:
    if convert_to_list[a] == abc[a]:
        new_generate_pass = []
        #s = abc[::-1]
        new_generate_pass.append(s[a])
        print (new_generate_pass)
    a = a + 1  

да и тут есть вопрос к тому, что происходит внутри if:

вы создаете новый список new_generate_pass, заносите в него один элемент s[a] и выводите это на экран

т.е. из-за того, что внутри if вы создаете список, то вы его в принципе никогда больше чем на 1 элемент и не накопите :)

→ Ссылка