Почему не срабатывает логическое "или"
def main_data():
archive_file = input("\nВведите адрес архива ")
# делаем проверку расширения файла
if archive_file.endswith('.zip') or archive_file.endswith('.rar') == False:
print(" Вы указали неверный файл. Файл не имеет расширения 'zip' или 'rar' ")
Ответы (2 шт):
Автор решения: Пушистик
→ Ссылка
def main_data():
archive_file = input('Введите адрес архива: ')
if not archive_file.endswith('.zip') and not archive_file.endswith('.rar'):
print('Вы указали неверный файл. Файл не имеет расширения \'.zip\' или \'.rar\'.')
Автор решения: Evrik
→ Ссылка
- У Вас на данном этапе проверяется, что название либо заканчивается на '.zip', либо не заканчивается на '.rar', т.е. оно верно для любых файлов, кроме '.rar'. Вы судя про всему хотели, чтобы проверка была успешной, если расширение файла не совпадает ни с одним из этих случаев. В таком случае нужно либо обе проверки взять в скобки, либо проверять каждую на соответствие условию.
- Проверять на
... == Falseне принято, правильнее проверятьnot ... - Для Вашего случая все вообще просто, т.к. метод
endswithможет принимать кортеж в качестве аргумента.
def main_data():
archive_file = input("\nВведите адрес архива ")
# делаем проверку расширения файла
if not archive_file.endswith(('.zip', '.rar')):
print(" Вы указали неверный файл. Файл не имеет расширения 'zip' или 'rar' ")