Таким образом, чтобы добавить сюда, как только произойдет первая проверка итерации, мы знаем, что она будет возвращать False
, так как первые два элемента не совпадают, и программа заканчивается там. Если вы хотите действительно увидеть, что это так, используйте встроенную функцию print()
, чтобы видеть, что происходит каждый раз, когда элемент повторяется в for
l oop:
Примерно так:
def samer(nums):
for i in range(0,len(nums)-1):
if (nums[i]) == (nums[i+1]):
print(True)
else:
print(False)
### adding a main method is always a good idea for clarity.
if __name__ == "__main__":
print(samer([1,3,44,5,5,8]))
Вывод такой:
False
False
False
True
False
Посмотрите, что возвращено True
для 3-го элемента, поскольку они равны и расположены рядом друг с другом.
Но с учетом того, как вы структурировали его в первом примере, он возвращает False
, когда попадает в контрольно-пропускной пункт после того, как проверит и увидит, что первая итерация не равна друг другу и, таким образом, вернула False
,
def samer(nums):
for i in range(0,len(nums)-1):
if (nums[i]) == (nums[i+1]):
return True
else:
return False
if __name__ == "__main__":
print(samer([1,3,44,5,5,8]))
Вывод:
False
С вашим подходом решение , который великолепен, l oop только "завершается", когда оно действительно не может найти совпадение (те же два числа), он вернет False
без зависимости от оператора else
. Поэтому, если он найдет совпадение, он вернет True
, что делает, а затем прекратит итерацию и выйдет из программы.