Хороший первый вопрос: «что означает 9»?
Если у вас есть массив чисел, считанный из командной строки или из пользовательского ввода, то «9», скорее всего, символ «9», то есть код ASCII 57 или кодовая точка Unicode U + 0039.
С другой стороны, если в вашем массиве есть действительные целые числа , тогда вы, вероятно, имеете дело с целочисленным значением 9 (которое будет символом ASCII TAB ).
Во-вторых, вы слишком нетерпеливы!
Рассмотрите этот ввод: [0, 0, 0, 0]
.
Что происходит?
def array_front9(nums):
for num in nums:
first4 = nums[0:4]
if num in first4 and num == 9:
return True
else:
return False
Ну, nums
это [0] * 4
, потому что он был передан.
Тогда num
начинается как 0
.
Тогда first4
становится [0, 0, 0, 0]
.
Тогда num in first4
определенно верно,
но num == 9
определенно неверно
, поэтому and
это False
.
Затем if
не выполняется, а else
выполняется
Итак, ваш код выполняется a return False.
Но это не так!
Потому что это произошло, когда вы все еще смотрели на самое первое значение в массиве. Вы никогда не проверяли другие значения, потому что вы return False
слишком рано.
Вам разрешено сделать упреждающий возврат, когда вы знаете результат - когда вы обнаружите 9 в первые 4 места. Но если вы собираетесь сканировать каждое из 4 мест, вы не можете вернуть false , пока не завершите sh сканирование.
Примерно так:
for num in nums[0:4]:
if num == 9:
return True
# Note: this is after the for loop
return False