Предмет: Информатика,
автор: Аноним
Маска файла
Миша готовится к ЕГЭ по информатике. Сейчас он изучает задачу A4, в которой описывается работа с масками файлов:
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которой также могут встречаться следующие символы.
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звёздочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.
Поскольку открытого банка задач для ЕГЭ по информатике не существует, Мише приходится тренироваться самостоятельно. Напишите программу, которая для каждого имени файла определит, подходит ли оно под заданную маску, чтобы Миша мог сверить свои ответы. Гарантируется, что в маске файла присутствует не более одного символа «*».
Входные данные
В первой строке содержится маска файла. В следующих 5 строках содержатся имена файлов по одному в строке. Имена файлов состоят из маленьких латинских букв, цифр и символа «.» (точка), в маске также могут содержаться символы «?» и «*» (символ «*» — не более одного раза). Длина каждой строки не превосходит 20 символов.
Выходные данные
Для каждого имени файла выведите слово «YES», если оно удовлетворяет маске и «NO» иначе. Выводить слова следует большими латинскими буквами без кавычек, каждое в новой строке.
Примеры
Ввод
Вывод
?or*.d??
fort.doc
ford.doc
lord2.doc
orsk.dat
port
YES
YES
YES
NO
NO
Ответы
Автор ответа:
0
Ответ:
s = input()
for qe in range(5):
a = input()
n = 1
q = 0
i = 0
f = 1
while q < len(s) and i < len(a) and f and n:
if s[q] == '?':
i += 1
q += 1
elif s[q] == '*':
n = 0
else:
if s[q] != a[i]:
f = 0
i += 1
q += 1
if not n:
for w in range(-1, -(len(s) - q), -1):
if s[w] != a[w] and s[w] != '?':
f = 0
break
if not f:
print('NO')
elif '*' not in s and len(a) != len(s):
print('NO')
else:
print('YES')
Объяснение:
PianinoMaks:
Не работает ничего! Хорошо, что сначала начал сам тестировать. Сначала сам протесть, а потом пиши.
если от руки переписать - сработает, если скопировать и вставить, то нет. Программа работает
Похожие вопросы
Предмет: Русский язык,
автор: Ледяная2
Предмет: Английский язык,
автор: Karolin
Предмет: Английский язык,
автор: viens
Предмет: География,
автор: ВаряЧеранёва
Предмет: География,
автор: Аноним