Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 20, 2019 16:33:13

mashamironova081999
Зарегистрирован: 2018-12-19
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

Ввести с клавиатуры имя файла. Если расширение имени файла – htm, html или php, выдать сообщение «Это веб-страница!», иначе выдать сообщение «Что-то другое.»
Пример:
Введите имя файла:
C:\DOC\Сайт\index.html
Это веб-страница!
Пример:
Введите имя файла:
C:\Документы\Приказ.doc
Что-то другое.

Офлайн

#2 Янв. 20, 2019 18:02:36

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите

 data = input()
if data[data.rfind('.')+1:] in ('htm', 'html','php'):
    print('Это веб-страница!')
else:
    print('Что-то другое.')

Офлайн

#3 Янв. 20, 2019 18:39:47

mashamironova081999
Зарегистрирован: 2018-12-19
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите

marvellik
rfind('.')+1:
Подскажите пожалуйста что значит ‘,’+1

Офлайн

#4 Янв. 21, 2019 10:12:54

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Помогите

Там небольшая ошибка, будет реагировать не только на имена ‘*.html’, но и на ‘html’.

mashamironova081999
Подскажите пожалуйста что значит ‘,’+1

 #
data = input()
i = data.rfind('.')
if i > -1 and data[i+1:] in ('htm', 'html','php'):
    print('Это веб-страница!')
else:
    print('Что-то другое.')

 data.rfind('.')
ищет справа налево в строке data строку ‘.’ (точку). Т.е. ту точку, которой отделяется расширение в имени файла. Если не найдёт, возвращает -1, если найдёт, возвращает её позицию.

 data[i+1:]
из строки data берётся кусок от i+1 (на i – точка, значит с i+1 начинается расширение) до конца строки.

 data[i+1:] in ('htm', 'html','php') 
проверка, не равен ли этот “кусок data” ‘htm’, ‘html’ или ‘php’.

Офлайн

#5 Янв. 21, 2019 10:41:49

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите

uf4JaiD5
Там небольшая ошибка, будет реагировать не только на имена ‘*.html’, но и на ‘html’.
это как ? пример можно?
 C:\DOC\Сайт\index.html.
Что-то другое.
>>> 
============= RESTART: C:\
html.
Что-то другое.
>>>

Офлайн

#6 Янв. 21, 2019 11:13:21

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Помогите

А зачем “C:\”? Просто ‘html’, в текущем каталоге.

 >>> data = 'html'
>>> print(data[data.rfind('.')+1:])
html
-1 +1 равно 0 же.

Офлайн

#7 Янв. 21, 2019 12:16:24

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите

uf4JaiD5
из задания

mashamironova081999
Ввести с клавиатуры имя файла. Если расширение имени файла
html не имеет расширения. можно проверять имеет ли файл кроме имени расширение или нет
мы же сравниваем расширения файла без точки
 >>> data = 'C:\DOC\Сайт\index.html'
>>> print(data[data.rfind('.'):])
.html
>>> print(data[data.rfind('.')+1:])
html
когда нет точки в тексте то вывод как у вас
 >>> data = 'html'
>>> print(data[data.rfind('.')+1:])
html
>>> data = 'html.'
>>> print(data[data.rfind('.')+1:])
>>>

Офлайн

#8 Янв. 21, 2019 14:04:41

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Помогите

marvellik
html не имеет расширения.
Ну это же корректное имя файла.
marvellik
можно проверять имеет ли файл кроме имени расширение или нет
i>-1

Офлайн

#9 Янв. 21, 2019 14:37:08

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Помогите

uf4JaiD5
да я согласен со всем. пусть дальше автор думает как и что проверять. . основное ему подсказали а захочет может и регулярками продолжить

Отредактировано marvellik (Янв. 21, 2019 14:37:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version