У меня есть следующий поток управления, и я чувствую, что его можно улучшить, но мне не хватает идеи, как ...
У меня есть два ВЗАИМНЫХ ИСКЛЮЧИТЕЛЬНЫХ условия и соответствующие действия, которые необходимо выполнить для конкретного условия (т. Е. Когда оно истинно) и для условия не определено (т. Е. Когда любое из них истинно). Также я хочу сделать что-то, когда ни одно из условий не соответствует.
Изначально у меня было:
if condition1:
print("something only on condition1")
print("also this because any condition is True")
elif condition2:
print("something only on condition2")
print("also this because any condition is True")
else:
print("do this when no condition")
однако, когда "print (" также это потому, что любое условие - True ")" - это часть большого блока кода, кажется нецелесообразным повторять его. Таким образом я придумал
if condition1:
print("something only on condition1")
elif condition2:
print("something only on condition2")
if condition1 or condition2:
print("also this because any condition is True")
else:
print("do this when no condition")
это, однако, кажется несколько излишним. Поскольку оба условия уже были проверены по отдельности, условие с оператором «или» представляется излишне избыточным. Хотя я могу ошибаться.
Третий вариант будет
if condition1 or condition2:
if condition1:
print("something only on condition1")
elif condition2:
print("something only on condition2")
print("also this because any condition is True")
else:
print("do this when no condition")
однако, это также не является реальным улучшением, и я чувствую, что сложенные операторы даже сложнее понять.
Кроме того, я должен помнить, что я хочу, чтобы «также это, потому что любое условие истинно», выполнялось после любого из действий, относящихся к условию.
Моя цель / вопрос заключается в том, существует ли разумный способ упростить этот поток управления и сделать его легко понятным. Например, способ иметь только 3 блока управления (if, elif, else) или в общем случае оценивать каждое отдельное условие только один раз.
Спасибо:)
EDIT:
Справочная информация о реальном задании (все еще упрощено):
есть два набора (которые могут быть больше в будущем):
img_extensions = ('.png', '.jpg')
video_extensions = ('.avi')
Теперь я получил некоторый путь [string] и хочу проверить, есть ли
path.endswith(img_extensions) <- condition1
path.endswith(video_extensions) <- condition2
Затем я создаю видео или изображение в соответствии с выполненным условием.
Если любой из них верен, я сообщаю пользователю, что он был успешным
Если не было выполнено ни одного условия, путь был неисправен, и я хочу сообщить об этом пользователю соответственно.