Небольшая проблема в циклах

Рейтинг: -1Ответов: 2Опубликовано: 17.02.2023

Код должен превратить все гласные в строке b в 1, а согласные в 0

a=['а', 'у', 'о', 'и', 'э', 'ы', 'я', 'ю', 'е', 'ё']
b=list(input().replace(' ',''))
print(b)
c=[]
for i in range(len(b)):
    for p in range(len(a)):
        if b[i]==a[p]:
            c.append(1)
        elif b[i]!=a[p]:
            c.append(0)
print(c)

Вот что получается

['т', 'р', 'у', 'л', 'я', 'л', 'я']
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]

Ответы

▲ 4

Список гласных лучше сделать множеством - поиск значительно быстрее. Введенное слово не нужно преобразовывать в список. Для сопоставления 1 и 0 гласным и согласным можно использовать логическое выражение i in a с преобразованием в int.

a = set('ауоиэыяюеё') 
b = input('Введите слово: ')
out = [int(i in a) for i in b]
print(b, out, sep='\n')
Введите слово: труляля
труляля
[0, 0, 1, 0, 1, 0, 1]

Однострочник

print([int(i in 'ауоиэыяюеё') for i in input('Введите слово: ')])
▲ 0

В вашем коде есть ошибка при вложенном цикле for Если исправить будет так

a=['а', 'у', 'о', 'и', 'э', 'ы', 'я', 'ю', 'е', 'ё']
b=list(input().replace(' ',''))
c=[]
# перебираем все символы строки b
for i in range(len(b)):
    # проверяем, является ли текущий символ гласной буквой
    if b[i] in a:
        c.append(1)  # если да, добавляем 1 в список c
    else:
        c.append(0)  # иначе добавляем 0 в список c
result = ''.join(c)
print(result)