В одной IT-компании существует негласный закон об именовании текстовых документов:
Название файла не должно начинаться на один из специальных символов: @№$%^&*().
Файл заканчивается расширением .txt или .docx.
Напишите программу, которая получает на вход полное название файла и проверяет его по этим правилам.
Пример 1:
Название файла: @example.txt
Ошибка: название начинается на один из специальных символов
Пример 2:
Название файла: example.ttx
Ошибка: неверное расширение файла. Ожидалось .txt или .docx
Пример 3:
Название файла: example.txt
Файл назван верно.
вот что я смог написать но это думаю не правильно
file=input('Введите имя файла: ')
if not file.endswith('.txt','.docx'):
print('Ошибка: неверное расширение файла')
if file.startswith(' @№$%^&*()'):
print('Ошибка:недопустимый символ')
else:
print('Файл назван верно')
proh_elements = list('@№$%^&*()')
print('Название файла не должно начинаться на один из специальных символов: @№$%^&*().'
'Файл заканчивается расширением .txt или .docx.')
file_name = input('Введите название файла: ')
if not file_name.endswith('.txt' or '.docx'):
print('Ошибка: неверное расширение файла. Ожидалось .txt или .docx')
for i in range(len(proh_elements)):
if file_name.startswith(proh_elements[i]):
print('Ошибка: название начинается на один из специальных символов')
break
else:
print('Файл назван верно:', file_name)
break
Это ж получится, что будет выход из цикла после первой итерации если символ разрешен.
То есть например %example.txt будет считаться разрешенным, проверка не дойдет до символа %.
эта штука не создаст кортеж внутри вызова функции. оно выполнит логическое или над этими 2мя строками как над бульками. в параметр уйдет ‘.txt’
иными словами:
file_name.endswith(’.txt’ or ‘.docx’) то же что и file_name.endswith(’.txt’)
file_name.endswith(’.txt’ or ‘.docx’) и file_name.endswith(’.txt’) or file_name.endswith(’.docx’) - разные вещи
elements = list('@№$%^&*().')
flag = True
print('Название файла не должно начинаться на один из специальных символов: @№$%^&*().'
'Файл заканчивается расширением .txt или .docx.')
file_name = input('Введите название файла: ')
if not file_name.endswith(('.txt', '.docx')):
print('Ошибка: неверное расширение файла. Ожидалось .txt или .docx')
for i in range(len(elements)):
if file_name.startswith(elements[i]):
print('Ошибка: название начинается на один из специальных символов')
flag = False
if flag is not False:
print('Файл назван верно.')
Тогда так. Вы уж извините, пару месяцев питон изучаю.
А вообще, делается все просто: пишутся юнит тесты, проверяющие все кейсы, которые придут в голову (они в условии перечислены). Потом пишется код, который должен решать поставленную задачу. Для подобных задач такой подход более чем норм. Да, задачка мелкая, да, тесты по объему будут больше самого решения, но хорошие привычки в себе нужно вырабатывать. В итоге получаем и решение и пруфы, что решение валидное. Ни один препод против не будет.
Да и в коммерческой разработке подход обоснования правильности кода юнит, интеграционными, компонентными тестами применяется во всех серьезных проектах.
Лучше поздно, чем никогда. Пускай будет для других кто ищет данную задачу.
document = input("Название файла: ")
if document.startswith(("@", "№", "$", "%", "^", "&", "*", "(", ")")):
print("Ошибка: название начинается на один из специальных символов")
elif not document.endswith('.txt') or document.endswith('.docx'):
print("Ошибка: неверное расширение файла. Ожидалось .txt или .docx")
else:
print("Файл назван верно", document)