Afficher les nombres pair entre 1 et n en python

Résolu/Fermé
anass_4206 Messages postés 2 Date d'inscription samedi 8 octobre 2022 Statut Membre Dernière intervention 8 octobre 2022 - Modifié le 11 oct. 2022 à 16:36
mamiemando Messages postés 33307 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 octobre 2024 - 11 oct. 2022 à 16:36

Bonjour

J'écris ce programme pour afficher les nombres pair entre 1 et 100 python mais il ne fonctionne plus.

n = int(input("donner n "))
i = 0
while i < n and i % 2 == 0:
    i = i + 1
    print(i)

Aidez-moi s'il vous plait ! 

A voir également:

2 réponses

mamiemando Messages postés 33307 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 octobre 2024 7 794
Modifié le 11 oct. 2022 à 16:36

Bonjour,

Le test de la boucle while fait que la boucle ne se poursuit que si i est plus petit que n et si i est pair. Or comme i est incrémenté de 1 à chaque tour de boucle, le test s'invalide dès que n passe de 0 à 1. En réalité, il y a confusion entre le critère d'arrêt de la boucle et le critère d'affichage.

Le code devient correct si on écrit :

n = int(input("donner n "))
i = 0
while i < n: 
    if i % 2 == 0:
        print(i)
    i = i + 1

Maintenant, il y a plusieurs choses qui sont très discutables :

  • une boucle for serait bien plus adaptée
  • il serait bien plus logique d'incrémenter i de 2 à chaque tour de boucle. Cela diviserait par deux le nombre de tours de boucle et éviterait d'avoir à tester la parité de i.
n = int(input("donner n "))
for i in range(0, n, 2):
    print(i)

Bonne chance

1
Whismeril Messages postés 19148 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 octobre 2024 919
8 oct. 2022 à 16:18

Et donc

  • Pourquoi i = 0 au début ?
  • Que se passe-t-il dans ton while quand i = 1 ?

0