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
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
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
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?
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)
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
typage structurel ftw
Découverte Python Doc Tkinter Les chaînes de caractères