def spy_game(nums):
code = []
for num in nums:
if num == 7 and code == [0,0]:
code.append(7)
elif num == 0:
code.append(0)
return code == [0,0,7]
# Check
spy_game([0,0,0,7]
It should get True because it has 0,0,7 in it
3 Réponses :
Vous devez continuer à réinitialiser sortie: p> code code> à [] code> lorsque les circonstances ne sont pas correctes et effectuent un rendement immédiat après la vérification de [0,0,7 ] code>:
Merci beaucoup, vous n'avez même pas besoin de réinitialiser le code juste pour ajouter le si len (code) <2 :)
Le code ici échouera si le cas maintenant selon la raison pour laquelle il renvoie Le meilleur moyen de démarrer itération de la deuxième position et de vérifier les deux valeurs précédentes. P> [0, 0, 0, 7] code> est présent que je crois devoir être vrai. true code> pour le cas spy_game ([7,7,7,5,0,7]) code> est-ce que Vous ne vérifiez pas si les zéros qui ont été ajoutés sont consécutifs. Ainsi, lorsque vous êtes itération de la liste, le premier zéro est ajouté, alors le prochain zéro est ajouté menant au code devenant [0, 0] code>. Ensuite, il vérifie les sept au dernier index. Comme le code au point est [0, 0] code> il ajoute sept et voila !! La valeur du code est [0, 0, 7] code> avant de retourner. P> 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
plus général, si vous souhaitez rechercher d'autres spys que de James Bond.
def spy_game( nums, target_list):
for n in nums:
if not target_list:
return True
if n == target_list[0]:
target_list.pop(0)
return not target_list
assert spy_game([1,2,4,0,0,7,5],[0,0,7])
assert spy_game([7,0,2,4,0,5,7],[0,0,7])
assert not spy_game([7,0,2,4,0,5,6],[0,0,7])
Si la taille de
code code> devient 2 et la correspondance actuelle échoue, vous devez réinitialiser le codecode> sur[] code>Mais il y a trois zéros.
Je ne comprends pas pourquoi le troisième chèque devrait être faux. Il y a 0, 0, 7 là aussi (le 2e, 6ème, 7ème numéros)
@ RDAS Non, vous ne pouvez pas vous réinitialiser pour vider la liste. Qui échouera sur [0, 0, 0, 7]
Vous devez énumérer clairement vos règles correspondantes. Il n'est pas évident que le 2e on devrait travailler et le 3ème devrait échouer. Le 3ème a 0, 0, 7 dans l'ordre séquentiel, comme le second, juste avec des 7 intermédiaires.
@Christiansloper merci, vous avez raison, je n'ai pas remarqué. Savez-vous ce que je devrais ajouter pour obtenir le quatrième chèque aussi?
@Jeffh Merci, j'ai commis une erreur que ce chèque est censé être vrai et je n'ai pas remarqué. J'ai édité les informations dans la question
Est-ce que le [0,0,7] doit être consécutif? Ou peuvent-ils être séparés?