-2
votes

code de fonction qui prend la liste des entiers et les retours true si contient 007 dans l'ordre

Voici la question écrite plus simplement:

J'essaie d'écrire une fonction qui prend une liste des entiers et des retours réels s'il contient 007 dans l'ordre. La séquence 0, 0, 7 ne doit pas nécessairement apparaître dans une commande consécutive dans la matrice pour être retournée. Par exemple, spy_game ([1,0,2,4,0,5,7]) devrait retourner vrai. P>

mais j'ai besoin de guidage car cela ne fonctionnera pas comme ci-dessous. P >

def spy_game(nums):
    for x in range(0,len(nums)):
        first_0=nums.index(0)
        second_0=nums.index(0, first_0+1)
        seven=nums.index(7)
        if nums[first_0:second_0+1]!=seven and seven>second_0:
            return True
        else:
            return False


4 commentaires

... vous obtenez le même index du poing 0 deux fois ...


[0,0,0,0,0,0,0,0,7] serait-il vrai? [0,1,1,1,1,1,1,1,1,1,1,1]?


Avez-vous fait du débogage du tout?


@Patrick Artner, oui aux deux


3 Réponses :


2
votes

.index code> tel que écrit trouvera le même zéro deux fois. .index code> prend un décalage pour commencer à chercher, alors commencez-en à l'une après le premier zéro:

    first_0 = nums.index(0)
    second_0 = nums.index(0,first_0 + 1)


1 commentaires

Mark, merci. J'ai révisé le code comme vous l'avez indiqué, puis supprimé 'first_0! = Second_0 et premier_0



0
votes

Votre logique de base est défectueuse. Vous localisez le premier 0 deux fois, puis localisez le premier 7 . Cela garantit que votre chèque échouera sous la forme First_0 doit être égal à second_0 . Vous n'avez rien fait pour répondre aux chiffres étant dans cet ordre.

Au lieu de cela, une fois que vous avez trouvé ce premier 0 , vous devez vérifier seul le reste de la liste pour un autre 0 < / code>. Si vous trouvez que, vous vérifiez la liste après que secondes 0 Pour voir s'il existe un 7 là-bas.

Si vous réussissez avec les trois chiffres, vous retournez true , mais renvoyez false sur n'importe quel échec.

codage qui reste comme un exercice pour l'étudiant.


0 commentaires

-1
votes

Je ne sais pas ce que vous voulez réaliser exactement. Je pense que vous voulez vérifier si [0,0,7] est une sous-séquence (non consécutive) de numéros ?

Peut-être que vous voulez faire quelque chose comme ça? xxx


0 commentaires