Как упростить / что использовать эти операторы if? - PullRequest
0 голосов
/ 15 октября 2019

Я пишу программу, которая должна запустить цикл for, а затем либо вернуть строку, либо запустить следующий цикл for. Я сделал так, чтобы когда она возвращала что-то, переменная менялась и следующий цикл не запускался. Это работает нормально, но я чувствую, что есть лучший способ сделать это.

check=0
    if check==0:
        for j in range (0,10):
            if something happens:
                check=1
                return('string')
    if check==0:
        for j in range (0,7):
            if something happens:
                check=1
                return('string')

1 Ответ

0 голосов
/ 15 октября 2019

Предполагая, что две проверки if something happens проверяют разные условия, а два возврата - разные строки:

for j in range(10):
   if something_happens:
      return 'string'

for j in range(7):   
   if some_other_thing_happens:
      return 'some other string'

Как сказал Дэниел Месехо, return "вернется" из функции и пропустит кодпод ним, так что вам не нужна переменная проверки. Вы не можете напрямую комбинировать циклы, потому что первая проверка может иметь значение False до j>=8, но вторая проверка может пройти и вернуться до этого, изменяя вашу логику.

Если проверки на something happensодинаковые и возвращаемые значения одинаковы, вы можете упростить до:

for j in range(10):
   if something_happens:
      return 'string'

Хотя, в зависимости от того, что на самом деле делает something_happens, вам может потребоваться вместо этого включить range(18). Трудно сказать, не зная, что оценивается в условном выражении.

См. this для дальнейшего понимания return

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...