from itertools import ifilterfalse
nombre1 = input("entrez le premier nombre : ")
nombre2 = input ("entrez le deuxieme nombre : ")
paire = lambda n : n % 2 == 0
ma_list = list(ifilterfalse(paire,range(nombre1,nombre2)))
print ma_list
@astroid : les bornes doivent être incluses dans la liste. Ton code ne retourne pas le bon résultat si je lui demande les nombres impairs entre 2 et 9 par exemple.
Ensuite, c'est inutile de filtrer le résultat de range puisqu'on peut lui passer le pas de l'itération.
La seule astuce que ce code utilise et qui n'est pas forcément immédiate à comprendre pour un débutant, c'est l'utilisation de l'opérateur | (bitwise OR) pour récupérer le premier nombre impair supérieur ou égal à a:
Plus simple, plus court, sûrement plus rapide, donne le même résultat en Python 2 et Python 3, et ne dépend d'aucun module de la bibliothèque standard.
Pourquoi convertir explicitement la sortie en liste ? Ça rajoute du code inutilement étant donné que l'utilisateur n'a peut-être besoin que d'un itérateur :
def impairs(inf, sup): return [n for n in range(inf, sup) if n%2 == 1]
Edit: Je viens de voir la version de pythan (j'avais la flemme de tout lire aussi xD). Re-edit: @fred1599: On peut toujours renvoyer une liste l'utiliser comme un générateur non ?:
s = ""
for i in impairs(0, 1000):
s += "{} ".format(i)
Bon je viens de découvrir quelque chose d'intéressant avec le slicing. Il accepete un 3ème argument qui représente le pas:
def nombres_impairs(min, max):
ma_liste = list()
for nombre in range(min, max+1):
ma_liste.append(nombre)
if min%2:
return ma_liste[::2]
else:
return ma_liste[1::2]
L'intérêt est juste de montrer une autre façon de sélectionner les éléments. En fait cette méthode est pratique quand la liste est déjà formée.
Bon un peu en retard mais je propose quand même ma solution, assez moche je vous l'accorde:
def fonction (mini , maxi):
liste_nb = []
if mini % 2 == 0: # Si le premier nombre est pair
mini += 1 # Le rendre impair
liste_nb.append(mini)
while mini < maxi - 1: #Tant que le nombre mini est inférieur au maxi
mini += 2
liste_nb.append(mini) # On ajoute les nombres impairs dans la liste
else:
while mini < maxi - 1:
mini += 2
liste_nb.append(mini)
liste_nb = str(liste_nb)
print(liste_nb)
Je trouve vos codes assez inefficaces, presque tout le monde a itéré entre les deux nombres et à tester pour chaque nombre la validité avec un modulo... Une autre idée qui ne fait intervenir que 2 opérations de modulo, quelque soit la longueur de l'intervalle:
a, b = int(input()), int(input())
print(' '.join(map(str, range(a if a%2 else a+1, b, 2))))
EDIT: la solution de nohar ressemble beaucoup à la mienne, je n'avais pas vu.
print "programme pour trouver tous les impairs entre deux valeurs."
debut = int(raw_input("saisir la valeur basse : \n"))
fin = int(raw_input("saisir la valeur haute : \n"))
list_impairs = []
if debut%2 ==1:
step = debut
else:
step = debut+1
while step <= fin:
list_impairs.append(step)
step +=2
print list_impairs
Avide de connaissances en électronique/dév/admin sys/db/réseau !
Pense à respecter les espaces autour des opérateurs, et à utiliser une boucle for quand tu veux itérer sur des nombres.
Aussi, si tu débutes ton apprentissage, je te conseille plutôt de commencer avec Python 3.
def resultat(nb1,nb2): try: assert nb1<nb2 except AssertionError: nb1,nb2=nb2,nb1 for i in range(nb1,nb2+1): if i%2: print(i,end=" ") print("Donner deux nombres pour savoir les nombres impaires qui se situent entre eux") nb1=int(input("nombre 1 : ")) nb2=int(input("nombre 2: ")) resultat(nb1,nb2)
- Edité par Linzosall1 29 septembre 2017 à 18:18:32
Voilà ma version. Pour autant j'aimerai savoir comment choisir les deux variables dans la même ligne. Merci par avance.
a = int(input("premier nombre: "))
b = int(input("deuxième nombre : "))
impairs = []
for i in range(a,b + 1):
if i % 2 != 0:
impairs.append(i)
print("La liste des nombres impairs entre ",a," et ",b,"est : ")
print(impairs)
Bonjour ! Je ne sais pas si quelqu'un va lire mon message vu que j'arrive environ neuf ans plus tard...
En fait j'ai réussi à trouver un code qui permet de générer les nombres impairs d'un intervalle donné. Mais j'ai un petit soucis, c'est que, à la fin, les nombres impairs ne sont pas donnés comme un liste, mais un à un (un par ligne quoi) ce qui prend beaucoup de place et n'était pas le but. Quelqu'un pourrait m'éclaircir ? Je suis vraiment débutant donc je suis pas totalement conscient de ce que je fais (mdr).
Je suis tellement débutant que j'ai pas compris comment partager mon code, du coup voilà :
Alors c'est très bien de t'attaquer à ce genre d'exercice, mais appuie-toi aussi sur le cours que tu suis pour apprendre et comprendre.
Aussi, quand tu dis que tu as « trouvé un code », c'est que tu l'as codé ou que tu l'as trouvé tout fait ?
Est-ce que tu as déjà manipulé des listes ? Sais-tu comment ajouter un élément à une liste ?
Ici le problème c'est qu'un appel à la fonction print affiche un message. Si tu veux faire autre chose qu'un affichage (par exemple ajouter une valeur à une liste), appelle une fonction qui fait cela.
Je l'ai trouvé dans le sens ou je l'ai codé seul en cherchant un petit peu et en testant. Je sais comment marche une liste (en tout cas dans les grandes lignes) mais c'est vrai que je n'ai pas lu tous les cours, faudrait peut-être que je m'y mette. Donc, d'après ce que j'ai compris : pour ajouter on utilise .append ou .insert et pour supprimer on utilise del ou .remove .
Je vais essayer d'améliorer avec votre commentaire, merci
× 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.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique