Aide programme python

Résolu
GGOKU221 - Modifié le 9 janv. 2024 à 02:03
mamiemando Messages postés 33083 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 - 9 janv. 2024 à 02:11

Bonjour,

Je débute en python, et j'ai écrit ce programme

tab = [12, 45, 16]
objet = input("Que cherchez-vous ?")
i = 0

for objet in enumerate(tab):
    if objet in tab:
        print(i)
        break
    else:
        print("Non")

dans le but de demander grace a une question quel nombre on veut chercher dans la liste, comparer la réponse a cette question avec les nombres dans la liste , et repondre si le nombre est dans liste ou pas . Le problème c'est que cela me repond non non non, et ce  en ayant essayé plusieurs modification , pourriez m'aider svp , merci

EDIT : AJOUT DES BALISES DE CODE
Windows / Chrome 120.0.0.0

1 réponse

jordane45 Messages postés 38149 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
7 janv. 2024 à 22:22

Bonjour,

tab = [12, 45, 16]
objet = int(input('que cherchez vous'))


if objet in tab:
    print("trouvé")
else:
    print ('Non trouvé')

1
mamiemando Messages postés 33083 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 7 749
9 janv. 2024 à 02:11

La réponse de Jordane45 est la bonne manière de faire.

Cependant, je me permets de compléter à des fins pédagogique.

  • Je pense qu'initialement, tu voulais comparer objet avec chacun des objets dans tab.
  • Dans ce cas, tu ne peux pas te permettre de nommer l'objet saisi et l'objet itéré de la même manière.
  • De plus, si tu utilises enumerate, il faut voir qu'à chaque itération, tu reçois un index courant et l'objet itéré.

Donc tu aurais pu écrire

tab = [12, 45, 16]
objet = input("Que cherchez-vous ?")

for (i, o) in enumerate(tab):
    if objet == o:
        print("Oui", (i, o))
        break
    else:
        print("Non")

... ou encore (vu l'énoncé) :

tab = [12, 45, 16]
objet = input("Que cherchez-vous ?")

for o in enumerate(tab):
    if objet == o:
        print("Oui")
        break
    else:
        print("Non")

... ou encore mieux (comme l'a dit jordane45) :

tab = [12, 45, 16]
objet = input("Que cherchez-vous ?")

if objet in tab:
    print("Oui")
else:
    print("Non")

L'avantage de cette troisième solution, c'est qu'on ne se préoccupe pas de savoir si tab est une liste, un ensemble (plus généralement, quelle est sa nature, du moment que c'est un itérable). Outre l'élégance, cela présente un intérêt également pratique. La recherche dans un ensemble (set) se fait en O(log(n)) (voir O(1) pour un hashset), ce qui est bien plus rapide que la recherche que tu fais avec une boucle for (qui est en O(n)). Cela signifie que si tableau est très grand, le programme sera plus rapide et consommera moins d'énergie.

Bonne chance 

0