Знакомые нам воспитанники детского сада наконец-то начали учить буквы.
Воспитатель предложил ребятам назвать слова, которые начинаются с А, Б или В. Напишите программу, которая проверяет, что первая буква во всех словах — А, Б или В.
Формат ввода
Вводится натуральное число N — количество слов, названных детьми.
В каждой из последующих N строк записано по одному слову строчными буквам.
Формат вывода:
YES
— если все слова начинаются с нужной буквы.NO
— если хотя бы одно слово начинается не с нужной буквы.
Пример
Ввод
3
арбуз
барабан
ворона
Вывод
YES
Ввод
4
аист
вареник
кузнечик
алыча
Вывод
NO
Решение
Задачу можно решить с использованием списков и без использования. Сама суть от этого меняется не сильно – меняется только способ ввода и накопления результата.
Получаем число. Инициализируем переменную-флаг которая будет содержать в себе результат проверки слов в True.
В цикле считываем слово и проверяем первую букву на соответствие условию. Если первая буква не соответствует списку, изменяем наш в флаг в False.
В зависимости от состояния флага выводим результат.
При проверке первой буквы вместо списка букв можно использовать строку, состоящую из искомых букв.
Посмотреть код
Решение
# вариант без списков
num = int(input())
all_good = True
for _ in range(num):
s = input()
if s[0] not in 'абв':
all_good = False
if all_good:
print('YES')
else:
print('NO')
Решение
# Вариант со списками
num = int(input())
all_good = True
words = []
for _ in range(num):
words.append(input())
for word in words:
if word[0] not in 'абв':
all_good = False
if all_good:
print('YES')
else:
print('NO')
Альтернативное решение:
count = int(input())
result = ‘YES’
for _ in range(count):
temp = input().lower()
if temp[0] not in ‘абв’:
result = ‘NO’
print(result)
Спасибо за вариант.
Это первое решение из предложенных, в котором в качестве переменной, отвечающей за определение результата сразу используется строка-результат.
“Быстрое” решение было бы именно таким. Но когда ты учишь чему-то других, нужно быть чуть более академичным.
Поэтому result становится булевой переменной, а вывод уже формируется исходя из ее значения.
В этой логике есть и другой слой – в подавляющем большинстве функций, к которые вы будете писать, результат проверок будет именно True и False, а не YES и NO.
n = int(input())
c = 0
for i in range(n):
str = input()
if str[0] not in ‘абв’:
print(‘NO’)
break
c += 1
if c == n:
print(‘YES’)
У меня неидеально получилось, конечно. Не додумался до флажка и сделал с счётчиком, он всё тоже самое делает вроде.
И ещё, т.к. цикл прерывается после NO, он не даёт оставшиеся строки написать. Хотя Яндекс не ругался на это