переход из внутреннего if-else на внешний else
Имеется два условия if-else для python, одно условие содержится внутри другого, как выполнить переход из внутреннего else на строку с внешним else - если возможно?
if True:
if False:
pass
else: # как отсюда сделать переход
else:
pass # сюда
вот подробное описание
из строки текста нужно выбрать и вырезать числа
которые имеют фиксированную разрядность =dig
которые могут быть как внутри скобок () в конце строки - ведём поиск справа
и могут быть без скобок в начале строки - поиск слева
поиск в разных направлениях должен сократить время обработки, но пока без замеров
использовать re - не уверен что оправдано
делаем так
if '(' in txt: # если скобок нет - начать поиск слева
ss = txt.rfind('(')
num = txt[ss + 1: ss + dig + 1] #dig - количество разрядов
if num.isdigit(): # если в скобках не число - начать поиск слева
txt = txt.replace(num, '').replace('()', '')
else:
for i, c in enumerate(txt):
if c.isdigit():
num = txt[i:i+dig]
if num.isdigit():
txt = txt.replace(num, '')
break
Ответы (3 шт):
Соглашусь с комментарием, что никак. Возможно автор хотел использовать прыжки, как в других ЯП, но этого питон не умеет.
Единственное, если очень не хочется переделывать логику, то можно сделать очень глупую функцию, в которую запихать что надо делать. И Вызывать ее из 2ух мест:
def stupid_func():
print(10)
if True:
if False:
pass
else:
stupid_func()# как отсюда сделать переход
else:
stupid_func() # сюда
Как итог, будет напечатано 10. НО! Еще раз повторюсь - это очень глупо и так не стоит делать!
Лучше изменить логику!
Желательно, чтобы вы описали подробнее, так как логически можно разделить на два блока с условиями и не использовать внутренний if, а добавить флаг, что условие для перехода в следующий if было выполнено
if False:
flag = False
pass
else: # как отсюда сделать переход (ваше)
flag = True
if True and flag:
# пришли сюда
pass
У вас там всё-таки какие-то реальные условия, поэтому перепишу на них:
if cond1:
if not cond2:
pass
else: # как отсюда сделать переход
else:
pass # сюда
Это можно записать так, если cond2 известно сразу и между if-ами ничего не происходит:
if cond1 and not cond2:
pass
else:
pass # сюда
Если же что-то происходит внутри первого if или cond2 как-то вычисляется внутри, то можно так:
flag = not cond1
if cond1:
if not cond2:
pass
else: # как отсюда сделать переход
flag = True
if not flag:
# тут ещё какой-то код, который нужно пропустить
if flag:
pass # сюда