0
votes

J'essaie de retourner true si la boucle Ajouter à "Codelist" la liste [0,0,7] mais je deviens vrai même si je n'ai pas ces chiffres dans ma liste

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

8 commentaires

Si la taille de code devient 2 et la correspondance actuelle échoue, vous devez réinitialiser le code sur []


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?


3 Réponses :


1
votes

Vous devez continuer à réinitialiser code à [] lorsque les circonstances ne sont pas correctes et effectuent un rendement immédiat après la vérification de [0,0,7 ] : xxx

sortie: xxx


1 commentaires

Merci beaucoup, vous n'avez même pas besoin de réinitialiser le code juste pour ajouter le si len (code) <2 :)



0
votes

Le code ici échouera si le cas [0, 0, 0, 7] code> est présent que je crois devoir être vrai.

maintenant selon la raison pour laquelle il renvoie 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>

Le meilleur moyen de démarrer itération de la deuxième position et de vérifier les deux valeurs précédentes. 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


0 commentaires

1
votes

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])


0 commentaires