Python3 Отступ возвращаемых значений - PullRequest
0 голосов
/ 13 октября 2019

НАЙТИ 33:

Учитывая список целых чисел, вернуть True, если массив содержит 3 рядом с 3 где-то.

has_33([1, 3, 3]) → True
has_33([1, 3, 1, 3]) → False
has_33([3, 1, 3]) → False

Вот как я это сделал:

def has_33(nums):
    for i in range(0, len(nums)-1):
        if nums[i] == 3 and nums[i+1] == 3:
            return True
        else:    
            return False

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Ответ был:

def has_33(nums):
    for i in range(0, len(nums)-1):
        if nums[i] == 3 and nums[i+1] == 3:
            return True
    return False

Почему первый метод кода не будет работать? Может кто-нибудь объяснить?

Ответы [ 2 ]

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

Потому что в вашем примере первый раз, когда он не находит 3 рядом с другими 3, возвращает False. И вы хотите дождаться возврата False, пока он не проверит весь список.

0 голосов
/ 13 октября 2019
def has_33(nums):
    for i in range(0, len(nums)-1):
        print("iteration ",i)
        if nums[i] == 3 and nums[i+1] == 3:
            return True
        else:    
            return False

Так что в приведенном выше коде, если вы видите, код возвращается из части else. Кроме того, цикл in выполняется только один раз.

И, что вы хотите, цикл должен работать на полную длину, так что вам нужно вернуть False, наконец.

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