Partage
  • Partager sur Facebook
  • Partager sur Twitter

Personne disparue France-IOI

    18 janvier 2019 à 10:52:22

    Bonjour,

    Je suis bloquée sur un problème de France IOI, ça m'énerve !!!! ;-)

    Voici le sujet :

    Un personnage important de la cité n'est pas rentré chez lui hier soir et tout le monde est à sa recherche. Or tout habitant de la ville a un numéro unique qui lui est associé et doit signer une sorte de registre quand il sort de la ville. Vous souhaitez savoir si le registre a été signé, auquel cas il faudra étendre les recherches à l'extérieur de la ville.

    Ce que doit faire votre programme :

    On vous donne un entier, le numéro d'une personne recherchée, puis un entier tailleListe, et enfin tailleListe entiers parmi lesquels vous devez chercher le numéro de la personne. Si le numéro est présent dans la liste (il peut l'être plusieurs fois) vous devez afficher le texte "Sorti de la ville" sinon "Encore dans la ville".

    Exemple

    entrée :

    42
    5
    1
    7
    172
    2
    41

    sortie :

    Encore dans la ville
    ***

    Alors, voici ce que j'obtiens... je n'arrive pas à avoir un retour avec une réponse unique pour la personne recherchée... j'ai toujours une liste ou si je mets les conditions tout à gauche la réponse est unique mais fausse. HELP !!!

    Voici le code (avec liste de l'exemple ci-dessus et avec la personne recherchée=7) :

    persrech=7
    tailleliste=5
    liste=[1,7,172,2,41]
    
    for loop in range(tailleliste):
        listepers = int(liste[loop]) 
        estsorti=(listepers==persrech)
    
        if estsorti:
            print("Est sorti de la ville")
        if not (estsorti):
            print("Encore dans la ville")
    
    

    Voici la sortie :

    Encore dans la ville
    Est sorti de la ville
    Encore dans la ville
    Encore dans la ville
    Encore dans la ville

    Pourriez-vous m'aider, svp ?

    Merci !

    -
    Edité par bdemontbeillard 18 janvier 2019 à 10:55:00

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2019 à 11:21:15

      tu veux savoir si le chiffre 7 est présent dans la liste du coup ? 

      if persrech in liste:
          print( "sorti de la ville")
      



      -
      Edité par loumierex 18 janvier 2019 à 11:21:45

      • Partager sur Facebook
      • Partager sur Twitter
      HOPE
        18 janvier 2019 à 11:28:21

        Merci j'ai essayé mais si je code sans un exemple de liste, ça ne marche pas...

        C'est un exercice pour utiliser des variables booléenne... (True et False), je n'y arrive pas...

        En fait je veux juste isoler le résultat de la personne recherchée (sorti de la ville ou encore dans la ville) parmi la liste de personnes donnée... je ne veux pas le résultat pour chacune des personnes de la liste...

        ça paraît tout bête mais impossible !

        Voici mon code initial :

        persrech=int(input())
        tailleliste=int(input())
        for loop in range(tailleliste):
            listepers = int(input())
            estsorti=(listepers==persrech)
            if estsorti:
                print("Est sorti de la ville")
            if not (estsorti):
                print("Encore dans la ville")

        -
        Edité par bdemontbeillard 18 janvier 2019 à 11:40:58

        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2019 à 22:21:34

          Bonsoir, 

          Je suis sur le même exercice... mon code est le suivant : 

          num_Pers_Recherchee = 42

          Taille_Liste = 6

          num_Liste = [5, 1, 7, 172, 2, 41]

          if num_Pers_Recherchee in num_Liste :

              print("Sorti de la ville")

          else :

              print("Encore dans la ville")

          Il n'est pas bon non plus et ne me donne que 38% de réussite, tandis qu'avec ce code : 

          num_Pers_Recherchee = int(input())
          num_Liste = [int(input()),]
          if num_Pers_Recherchee in num_Liste :
          print("Encore dans la ville")
          else :
          print("Sorti de la ville")
          J'arrive à 63%...
          Du coup, je cherche encore.
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2019 à 14:52:20

            Ce sont les int(input()) qui ne sont pas bon, déjà tu ne parse pas Taille_Liste.

            personne_recherchee = input()
            taille_liste = int(input())
            personnes_sorties = set()
            for _ in range(taille_liste):
                personnes_sorties.add(input())
            
            if personne_recherchee in personnes_sorties:
                print('Sorti de la ville')
            else:
                print('Encore dans la ville')

            Et puis sys.stdin c'est encore mieux, tu peux commencer tous tes programmes France IOI par les lignes 1 à 3 de ce code :

            import sys
            
            lines = sys.stdin.readlines()
            
            personne_recherchee = lines[0]
            la_taille_on_sen_fout = lines[1]
            personnes_sorties = set(lines[2:])
            
            
            if personne_recherchee in personnes_sorties:
                print('Sorti de la ville')
            else:
                print('Encore dans la ville')



            -
            Edité par thelinekioubeur 25 février 2019 à 14:55:05

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              25 février 2019 à 15:44:14

              print(("Encore dans la ville","Sorti de la ville")[int(input())in[int(input())for _ in range(int(input()))]])

              -
              Edité par Anonyme 25 février 2019 à 15:44:40

              • Partager sur Facebook
              • Partager sur Twitter
                25 février 2019 à 17:30:13

                Que voilà un exemple de clareté, c'est limpide, vraiment ^,^

                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2019 à 20:51:23

                  Joli one-line.

                  Si on part là dedans on peut faire encore plus court :

                  i=input;print(("Encore dans", "Sorti de")[int(i())in[int(i()) for _ in range(int(i()))]]+" la ville")

                  et moins clair :

                  import zlib,base64;exec(zlib.decompress(base64.b64decode('eJzLtM3MKygtsS4oyswr0dBQcs1Lzi9KVUhJzCtW0lEKzi8qyVRISVXSjAZJZ2poambmwZlp+UUK8QqZeQpFiXnpqRowYc3YWG0lhZxEhbLMnBygVi4AlbYf1w==')))




                  -
                  Edité par thelinekioubeur 25 février 2019 à 20:53:59

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    26 février 2019 à 0:11:53

                    Dans le même genre mais avec un petit exploit bien connu :

                    import base64,pickle;pickle.loads(base64.b64decode(b'gANjYnVpbHRpbnMKZXhlYwpxAFhtAAAAcHJpbnQoKCJFbmNvcmUgZGFucyBsYSB2aWxsZSIsIlNvcnRpIGRlIGxhIHZpbGxlIilbaW50KGlucHV0KCkpaW5baW50KGlucHV0KCkpZm9yIF8gaW4gcmFuZ2UoaW50KGlucHV0KCkpKV1dKXEBhXECUnEDLg=='))
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 février 2019 à 22:16:12

                      Bonsoir, 

                      Merci à tous pour vos réponses plus ou moins limpides !;-D

                      J'ai finalement pu trouver le bon résultat ! 

                      Merci thelinekioubeur pour les explications plus détaillées ;-)

                      -
                      Edité par Mary.E 27 février 2019 à 22:16:41

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 juillet 2019 à 9:58:33

                        Bonjour,

                        Quelques mois après ces échanges, je suis également bloquée sur le sujet pour la même raison que bdemontbeillard

                        Je ne sais pas comment stocker le résultat 'true' (le numéro est bien apparu dans la liste) pour que la boucle l'enregistre au lieu de l'écraser par le numéro suivant.

                        Du coup si le numéro recherché n'apparait pas en dernier dans la boucle, j'affiche toujours la condition 'false'.

                        L'exercice demande d'afficher une ligne et non pas une ligne par numéro sorti. Pouvez-vous m'aiguiller?

                        Voici mon code:

                        Merci

                        -
                        Edité par Ln56b 17 juillet 2019 à 10:12:18

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 juillet 2019 à 10:15:16

                          Bah il y a la solution plus haut, tu as juste à tester si numRech est dans inputs :

                          numRech=42
                          tailleListe=5
                          inputs=[5,1,7, 42, 8]
                          
                          if numRech in inputs:
                              print("Sorti de la ville")
                          else:
                              print("Encore dans la ville")


                          Edit : ah bah tu as édité ton message donc le mien ne veut plus rien dire ^^

                          -
                          Edité par thelinekioubeur 17 juillet 2019 à 10:17:12

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 juillet 2019 à 10:20:37

                            désolée l'exemple de code que j'ai envoyé porte à confusion, j'ai mis les inputs pour tester. En réalité on ne les a pas donc le code ressemble à ça

                            -
                            Edité par Ln56b 17 juillet 2019 à 10:23:10

                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 juillet 2019 à 11:42:16

                              Merci de placer ton code dans des balise et non pas de donner un screenshot qui obligerait à recopier ton code si on veut l'essayer.

                              La logique de ton code est incorrecte. En effet, ce n'est pas parce que leVoila est False qu'il est encore dans la ville. En outre, tu dois produire un seul affichage.

                              Tu peux procéder de plusieurs façons. Vu que de toute évidence tu débutes, je te conseille d'utiliser la technique du drapeau (regarde mon cours de découverte si tu veux d'autres exemples). Je reprends ta variable status qui va jouer le rôle de drapeau:

                              personne=input()
                              n=int(input())
                              
                              # le drapeau
                              status="Encore dans la ville"
                              
                              for _ in range(n):
                                  nro=input()
                              
                                  if ???:
                                      # on change le drapeau
                                      # ton code
                                     
                                  
                              print(status)
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 juillet 2019 à 11:04:16

                                Merci PascalOrtiz pour le tuyau, j'ai pu résoudre le sujet grâce à la méthode "drapeau" en remplaçant True / False par les textes à afficher, parfait!

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Personne disparue France-IOI

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                • Editeur
                                • Markdown