Код здесь потерпит неудачу, если присутствует регистр [0, 0, 0, 7]
, который, я считаю, должен быть верным.
Теперь по причине, почему он возвращает true
для случая spy_game([7,0,7,7,5,0,7])
, это то, что вы не проверяете, являются ли добавленные нули последовательными. Поэтому, когда вы выполняете итерацию по списку, сначала добавляется ноль, а затем добавляется следующий ноль, в результате чего код становится [0, 0]
. Затем он проверяет семерку на последнем указателе. Поскольку код в точке [0, 0]
, он добавляет семь и вуаля! Значение кода [0, 0, 7]
перед возвратом.
Лучший способ - начать итерацию со второй позиции и проверить два предыдущих значения.
def spy_game(nums):
for index in range(2, len(nums)):
if nums[index-2] == 0 and nums[index-1] == 0 and nums[index] == 7:
return true
return false
Что происходит в этом случае является то, что он проверяет, является ли текущее значение семь и предыдущие два нули. Если ДА, тогда он возвращает истину. Если он не находит таких условий, то в конце возвращает false.
Надеюсь, это поможет!