IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[Algorithme de recherches élémentaires] Besoin d'aide


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Par défaut [Algorithme de recherches élémentaires] Besoin d'aide
    Bonjour à tous,
    Pour un TP scolaire, je dois écrire un algorithme capable de donner tout les entiers impairs, multiples de 5 et/ou contenant un 2; compris dans un interval [n,m] (Avec n,m en donné par l'utilisateur)
    J'e débouche sur cet algorithme, qui dans ma tête est censé fonctionner, et j'en arrive à une erreur incompréhensible, comme si dans mon "while m<n:", toutes les conditions et autres "while" sont ignorés, sauf une (le "if a==5:")
    Voici un screenshot, dl plus bas.


    Si vous avez besoin d'autres informations que j'aurai pu oublier, dites le.
    Merci d'avoir pris le temps de lire mon message.
    Fichiers attachés Fichiers attachés
    • Type de fichier : py ex8.py (557 octets, 75 affichages)

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Bonjour, le sujet n' est pas très explicite. Imaginons que je prenne tous les nombres entre 0 et 100, le seul résultat est 25, car impair, multiple de 5 et le chiffre 2 présent, non?

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    La question est bien si le nombre est impair and (multiple de 5 or contient un "2") ?

    Si j'ai bien compris voici ma proposition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Python 2.7.3 (default, Apr 10 2013, 05:46:21) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = 10
    >>> b = 50
    >>> l = [x for x in range(a, b) if x % 2 == 1 and (x % 5 == 0 or '2' in str(x))]
    >>> l
    [15, 21, 23, 25, 27, 29, 35, 45]
    Si je n'ai rien compris, dites le hein !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Par défaut
    Je me suis mal exprimé désole, je dois obtenir tout les nombres:
    -impairs
    -multiples de 5
    -contenant un 2

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Ok c'est plus clair, donc juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> for i in range(10):
    ...     if i%2 or not i%5 or "2" in str(i):
    ...         print(i)
    ... 
    0
    1
    2
    3
    5
    7
    9
    devrait suffire non?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Par défaut
    Merci beaucoup
    C'est la partie de code qui m’intéressait, je débute donc je m'y perd !
    Encore merci a toute la communauté !

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    OK on change alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    l = [x for x in range(a, b) if x % 2 == 1 or x % 5 == 0 or '2' in str(x)]
    Mais entretemps j'ai vérifié ton code.

    Tout d'abord:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        i=1
        while n>i|n==0:
            a=(n-(i*(n//i)))//(i/10)
            i=i*10
            if a==2:
    Si n == 0 tu es dans une boucle infernale.
    Si a == 2 ne dit pas si n contient un "2"

    Ensuite
    Je pense qu'ici c'est le modulo de x par y que tu veux, ce qui s'écrit comme ceci:
    Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        if a==1|a==3|a==7|a==9:
    Ce n'est rien d'autre que not x modulo 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if not n % 2:
            print("%s est impair" % n)
    Côté esthétique, il est apprécié de mettre des espaces de part et d'autre des opérateurs, de préférer or à | et and à &.

    Et surtout de copier simplement son code entre des balises du même nom plutôt que de coller une image, ton code est incopiable.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 5
    Par défaut
    Ah oui, j'avais pas pensé au cas du n=0
    C'est beaucoup plus clair de cette manière, mais je ne connaissais pas le str(x)
    Je crois avoir compris, et c'est vraiment très simple en fait je me suis compliqué la vie pour rien !
    Et j'ai pas pensé au n%2!=0, c'est quand même plus simple que d’écrire toutes les possibilités !
    Merci mais j'ai vraiment toujours pas compris ce qu'il se passait dans mon ancien code, pourquoi il se comportait si bizarrement ..

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Merci mais j'ai vraiment toujours pas compris ce qu'il se passait dans mon ancien code, pourquoi il se comportait si bizarrement ..
    Tu ne devrais pas réfléchir sur un code qui à la base a été mal pensé.

    La bonne méthode c'est de réfléchir sur papier et de représenter avec une syntaxe le plus approprié possible (possibilité du langage) ta réflexion.

    Si tu avais fais ceci, tu n'aurais sans doute pas pondu ce code.

    Bonne continuation...

Discussions similaires

  1. [Toutes versions] recherche SI : besoin d'aide
    Par kcaprini dans le forum Excel
    Réponses: 2
    Dernier message: 16/03/2010, 14h31
  2. j'ai un algorithme et j'ai besoin d'aide
    Par hapchlolo dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 22/05/2007, 15h43
  3. Besoin d'aide sur un pseudo moteur de recherche
    Par Jim_Nastiq dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/04/2006, 17h43
  4. Besoin d'aide sur un script SQL de recherche
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/10/2005, 11h40
  5. Besoin d'aide pour algorithme de traitement d'images
    Par Zenman94 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 07/04/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo