Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Exercice][Débutant] Nombres impairs

    19 octobre 2010 à 20:11:22

    Ok, bon imaginons que j'ai ca a la place

    print("Entrez le premier nombre:")
    A = int(input())
    print("Entrez un second nombre")
    B = int(input())
    print("Les nombres impaires entre", A, "et", B, "sont:")
    for i in range(abs(B-A)+A):
        if i == 1 % 2:
            print(i)
    


    Il me renvoi quand meme que 1...
    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2010 à 20:14:25

      La boucle ne fonctionnera pas non plus. range() peut tout à fait prendre deux arguments : for i in range(min(A,B), max(A,B)):

      Et je m'étais arrêté là tout à l'heure, la condition est, elle aussi, fausse. Tu veux tester si i est divisible par deux, or, tu testes uniquement si 1 est divisible par deux. Tu as inversé 1 et i, en d'autres termes.
      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2010 à 20:20:33

        Merci beaucoup, en fait j'avais écrit le modulo comme en maths...

        Voila le code que j'ai finalement


        print("Entrez le premier nombre:")
        A = int(input())
        print("Entrez un second nombre")
        B = int(input())
        print("Les nombres impaires entre", A, "et", B, "sont:")
        for i in range(min(A,B),max(A,B)):
            if i%2==1:
                print(i)
        


        EDIT avec range(abs(B-A)+A) ca marche aussi hein :)
        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2010 à 20:29:55

          T'es certain ? Si je prends encore l'exemple avec 10 et 20, ta boucle serait for i in range(20) , ce qui est encore faux (on commence à 0 si on ne spécifie qu'un paramètre à range()).
          • Partager sur Facebook
          • Partager sur Twitter
            19 octobre 2010 à 20:32:38

            My apologize, pour les test je rentrais toujours 1 comme premier nombre, c'est pour ca que ca me parraissait juste...

            Merci anyway
            • Partager sur Facebook
            • Partager sur Twitter
              26 octobre 2010 à 2:20:47

              Voila j'ai voulu moi aussi faire l'exercice mais j'ai une erreur qui s'affiche et je n'arrive pas a la corriger.

              print (" entrez un nombre ")
              
              nombre1 = input()
              
              print ("entrez un deuxieme nombre ")
              
              nombre2 = input()
              
              while nombre1 < nombre2 :
                  nombre1
                  nombre2
                  nombre1 += 2
              


              voici l'erreur : nombre1 += 2
              TypeError: Can't convert 'int' object to str implicitly


              Je voulais en fait que mon programme ajoute 2 au nombre1 jusqu'à a arriver au nombre2.

              je vous remercie d'avance.
              • Partager sur Facebook
              • Partager sur Twitter
                26 octobre 2010 à 2:27:54

                Lorsque l'utilisateur entre quelque chose, ce quelque chose sera toujours une chaîne de caractères. Tu dois transtyper ta chaîne vers un entier. Note aussi que tu peux spécifier un argument à input : une chaîne de caractères qui sera affichée à l'écran.

                nombre1 = int(input("Entrez un nombre: "))
                
                • Partager sur Facebook
                • Partager sur Twitter
                  26 octobre 2010 à 2:39:27

                  Voici donc mon code

                  nombre1 = int(input("Entrez un nombre: "))
                  
                  nombre2 = int(input("Entrez un nommbre: "))
                  
                  while nombre1 < nombre2 :
                      nombre1 += 2
                  


                  il reste un probleme c-est que ça n'écrit pas les nombres.
                  je sais que je peux paraitre boulet dsl. :euh:
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 octobre 2010 à 2:46:15

                    Tu n'utilises pas la fonction print, évidemment que le nombre ne s'affiche jamais !

                    P.S. Note que ton algorithme ne fonctionnera pas si j'entre le nombre 40 en premier, par exemple. Tu ne testes jamais s'il est impair. Note aussi que si le premier nombre est plus grand que le deuxième, la condition sera fausse dès le départ.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 octobre 2010 à 2:53:07

                      Ah ok.
                      bon ba j'essaye ça tout de suite.
                      merci

                      ok voila mon nouveau code



                      nombre1 = int(input("Entrez un nombre: "))
                      
                      nombre2 = int(input("Entrez un nombre: "))
                      
                      if nombre1%2 == 0 :
                      
                          if nombre1 < nombre2 :
                              nombre1 + 1
                              print (nombre1)
                              while nombre1 < nombre2 :
                                  nombre1 += 2
                                  print(nombre1)
                      
                      if nombre2 < nombre1 :
                              nombre2 + 1
                              print (nombre2)
                             
                      else :
                          if nombre1 < nombre2 :
                              while nombre1 < nombre2 :
                                  nombre1 += 2
                                  print(nombre1)
                      
                      if nombre2 < nombre1:
                          while nombre2 < nombre1 :
                              nombre2 += 2
                              print(nombre2)
                      


                      Voila normalement tout est bon :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        26 octobre 2010 à 13:14:35

                        Citation

                        ok voila mon nouveau code



                        En gros ton code pourrait être nettement simplifié en utilisant je pense ton algo on pourrait écrire ce code.

                        nombre1 = int(input("Entrez un nombre: "))
                        
                        nombre2 = int(input("Entrez un nombre: "))
                        
                        while nombre1 <= nombre2:
                            if nombre1 %2 != 0:
                                print (nombre1)
                                nombre1 += 1
                            nombre1 += 1
                        


                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 octobre 2010 à 14:23:37

                          Citation : fred1599

                          Citation

                          ok voila mon nouveau code



                          En gros ton code pourrait être nettement simplifié en utilisant je pense ton algo on pourrait écrire ce code.

                          nombre1 = int(input("Entrez un nombre: "))
                          
                          nombre2 = int(input("Entrez un nombre: "))
                          
                          while nombre1 <= nombre2:
                              if nombre1 %2 != 0:
                                  print (nombre1)
                                  nombre1 += 1
                              nombre1 += 1
                          





                          Cet algorithme est excellent. :o
                          On peut imaginer une même fonction, qui, au lieu de renvoyer des nombres, renvoi une liste :

                          def lni(nombre1, nombre2):
                              listeNombreImpairs = []
                              while nombre1 <= nombre2:
                                  if nombre1 %2 != 0:
                                      listeNombreImpairs.append(nombre1)
                                      nombre1 += 1
                                  nombre1 += 1
                              return listeNombreImpairs
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            26 octobre 2010 à 15:23:45

                            Citation

                            On peut imaginer une même fonction, qui, au lieu de renvoyer des nombres, renvoi une liste



                            Je te renvoie à la 1ere page de ce post, tu verras des codes corrects pour le même résultat.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 octobre 2010 à 15:25:53

                              En effet, j'avais pas vu merci ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 octobre 2010 à 20:26:00

                                Citation : fred1599

                                En gros ton code pourrait être nettement simplifié en utilisant je pense ton algo on pourrait écrire ce code.



                                Oui je dévellope beaucoup.

                                Donc si j'ai bien compris ton code.
                                Voici ce que ça donne en entier:

                                nombre1 = int(input("Entrez un nombre: "))
                                
                                nombre2 = int(input("Entrez un nombre: "))
                                
                                while nombre1 <= nombre2:
                                   if nombre1 %2 != 0:
                                        print (nombre1)
                                        nombre1 += 1
                                   nombre1 += 1
                                
                                while nombre2 <= nombre1:
                                    if nombre2 %2 != 0:
                                        print (nombre2)
                                        nombre2 += 1
                                    nombre2 += 1
                                


                                Edit : Si quelqu'un peut m'expliquer quand utiliser != ce serait gentil car je n'ai jamais su quand l'utiliser.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  26 octobre 2010 à 20:55:47

                                  Ton deuxième bloc while ne sert à rien, le bloc while n°1 fait déjà tout correctement. Teste le pour vérifier et fait le à la main (crayon + papier) pour comprendre le code.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 octobre 2010 à 21:03:10

                                    Quand le nombre2 est superieur chez moi rien ne se passe.
                                    Chez moi cela ne marche que avec le deuxieme bloc.
                                    J'en ai donc déduit que la premiere boucle while ne marchait que quand le nombre1 était inferieur.

                                    Edit : j'ai retesté avec une seule boucle while. Cela ne marches pas
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 octobre 2010 à 21:07:17

                                      Citation : Prologin

                                      Il s'agit d'écrire une fonction qui prend deux entiers en paramètres, et qui affiche, dans l'ordre croissant, tous les nombres impairs se trouvant entre ces deux entiers, inclus. Vous devez afficher ces nombres, en les séparant uniquement d'un espace.


                                      Donc, si le premier nombre est inférieur, rien ne doit se passer ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 octobre 2010 à 21:10:08

                                        J'avais pas compris l'ordre croissant comme ça.
                                        J'ai compris maintenant.
                                        Merci
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          26 octobre 2010 à 21:11:17

                                          à la rigueur à ton niveau tu peux toujours faire ceci qui te permet au cas où le mec est un peu...

                                          nombre1 = int(input("Entrez un nombre: "))
                                          
                                          nombre2 = int(input("Entrez un nombre: "))
                                          
                                          if nombre1 >= nombre2:
                                              mini = nombre2
                                              maxi = nombre1
                                          else :
                                              mini = nombre1
                                              maxi = nombre2
                                          while mini <= maxi:
                                              if mini %2 != 0:
                                                  print (mini)
                                                  mini += 1
                                              mini += 1
                                          
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 octobre 2010 à 21:16:48

                                            Oui comme ça les deux cas de figures marchent.
                                            Merci.
                                            Je crois que j'ai fait le tour de l'exercice.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              26 octobre 2010 à 21:26:52

                                              Ça peut encore pas mal s'alléger :

                                              nombre1 = int(input("Entrez un nombre: "))
                                              nombre2 = int(input("Entrez un autre nombre: "))
                                              
                                              if nombre1 > nombre2:
                                                  nombre1, nombre2 = nombre2, nombre1
                                              while nombre1 <= nombre2:
                                                  if nombre1 %2 != 0:
                                                      print(nombre1)
                                                  nombre1 += 1
                                              
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Zeste de Savoir, le site qui en a dans le citron !
                                                26 octobre 2010 à 21:42:13

                                                Par pur ennui, voici un code proposé par l'Association Protectrice des Raisonnements de CM1 en Programmation :
                                                def f(a, b):
                                                     if a%2 == 0: a += 1
                                                     while a <= b:
                                                         print a
                                                         a += 2
                                                
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 octobre 2010 à 10:26:46

                                                  Citation : Darko'

                                                  l'Association Protectrice des Raisonnements de CM1 en Programmation :



                                                  <object width="480" height="360" type="application/x-shockwave-flash" data="http://www.youtube.com/v/GXFRSmfXewM"><param name="movie" value="http://www.youtube.com/v/GXFRSmfXewM" /> <param name="allowFullScreen" value="true" /> <param name="wmode" value="transparent" /></object>
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 octobre 2010 à 12:22:52

                                                    Bon, fallait bien que j'intervienne dans ce topic pour une one-line pour l'exercice : print (lambda m,n: ' '.join(str(i) for i in xrange(int(m),int(n)+1) if i%2))(*raw_input().split(' ')) .
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      17 avril 2011 à 11:28:58

                                                      Et voilà ma simple solution:

                                                      #!/usr/bin/env python
                                                      # -*- coding: utf-8 -*-
                                                      
                                                      try:
                                                      	x = int(raw_input('Taper X: '))
                                                      	y = int(raw_input('Taper Y: '))
                                                      	if y < x:
                                                      		print 'Y doit etre plus grand que X'
                                                      	for i in range(x, y+1):
                                                      		if i % 2 != 0:
                                                      			print i,
                                                      except Exception, e:
                                                      	print 'Erreur:', e
                                                      


                                                      Et:

                                                      Taper X: 11
                                                      Taper Y: 54
                                                      11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        3 août 2011 à 21:26:31

                                                        Bonsoir, voici ma solution, sans doute a t-elle déjà été proposée:

                                                        Edit:Je n'avais pas vu qu'il fallait pouvoir entrer les 2 nombres:

                                                        def nImp(i):
                                                            return ' '.join([str(nb) for nb in range(int(i[0]),int(i[1])+1) if nb % 2 != 0])
                                                        
                                                        def testInp():
                                                            while True:
                                                                i = input('Entrez 2 nombres:').split(' ')
                                                                try:
                                                                    if len(i) != 2 or int(i[1]) <= int(i[0]):
                                                                        raise ValueError
                                                                    return i
                                                                except ValueError: print("Entrée Invalide")
                                                                
                                                        print(nImp(testInp()))
                                                        
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          10 août 2011 à 17:34:14

                                                          bonjour voici ma maigre contribution a cet exercice
                                                          #definition de ma fonction
                                                          
                                                          def impair (a,b):
                                                              if a%2 !=0 :
                                                                         n=a
                                                          
                                                              else :
                                                                   n=a+1
                                                          
                                                              while n<=b :
                                                                         print (n,end=' ')
                                                                         n=n+2
                                                              
                                                          
                                                          #corps du programme
                                                          print ("programme qui affiche tous les entiers naturels impairs entre deux nombres")
                                                          print ("entrer le premier nombre", end=' :')
                                                          a= int (input())
                                                          print ("entrer le deuxième nombre", end=' :')
                                                          b= int (input())
                                                          impair(a,b)
                                                          


                                                          je vais regarder ce qui a été posté :p:p:-°:(
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            10 août 2011 à 18:50:58

                                                            J'en profite aussi de poster ma solution. ;)

                                                            def impair(n, m):
                                                                """Afficher les nombres impairs compris entre n et m
                                                                inclus.
                                                                """
                                                                
                                                                for i in range(n, m):
                                                                    if i % 2:
                                                                        print(i, end = " ")
                                                                        
                                                                print(m)
                                                            
                                                            impair(42, 51)
                                                            


                                                            43 45 47 49 51
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              8 octobre 2013 à 19:52:21

                                                              voici ma version du  code:
                                                              nombre1 = input("entrez le premier nombre : ")
                                                              nombre2 = input ("entrez le deuxieme nombre : ")
                                                              
                                                              for nb in range(nombre1,nombre2):
                                                              	if nb % 2 != 0 :
                                                              		print ('Ce nombres est impaires  :',str(nb))

                                                              je crois qu'il est bon :D
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [Exercice][Débutant] Nombres impairs

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown