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 :

LANGUAGE PYTHON HELP !


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut LANGUAGE PYTHON HELP !
    Bonjour, j'ai écris un script dont le but est de demander à l'utilisateur d'entrer une chaine de caractère et le programme va retourner cette chaine à l'envers.
    Mon script marche la plus part du temps mais pafois non ! Comment est ce possible?? je ne comprend pas mon erreur!! Quelqun peut il m'aider ??? MERCIIIII
    voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    x=str(input("Entrez une phrase :"))
    chaine=[]
    def inverse_chaine(chaine):
    	for i in range(len(x)):
    		chaine=list(x)
    		for i in range(len(chaine)):
    			chaine.reverse()
    			chaine1="".join(chaine)
    	return(chaine1)
    print(inverse_chaine(chaine))

  2. #2
    Invité
    Invité(e)
    Par défaut
    Moi j'aurai fait ainsi plutôt que de passer par deux boucles et tu donnes 'x' en parmatère à la méthode inverse_chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def inverse_chaine(chaine):
        tmp_ch = list(chaine)
        tmp_ch.reverse()
        return ''.join(c for c in tmp_ch)
    P.S : Ce ne sont pas des "itérations", mais des "tabulations"

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonsoir

    Citation Envoyé par cheval_boiteux Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def inverse_chaine(chaine):
        tmp_ch = list(chaine)
        tmp_ch.reverse()
        return ''.join(c for c in tmp_ch)
    Pourquoi créer cette variable intermédiaire ???
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def inverse_chaine(chaine):
        return ''.join(c for c in reversed(chaine))

    Ou même pourquoi passer par 2 fonctions peut-être gourmandes
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def inverse_chaine(chaine):
        return chaine[-1:0:-1] + chaine[0]
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def inverse_chaine(chaine):
        return chaine[-1:0:-1] + chaine[0]
    Pourrais-tu expliciter ce que fait ?

    Merci.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def inverse_chaine(chaine):
        return chaine[-1:0:-1] + chaine[0]
    Bon en cherchant sur le net, il y y a encore plus simple :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def inverse_chaine(chaine):
        return chaine[::-1]

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    merci pour vos réponses !! et oui je ne suis qu'une débutante en python encore bcp de chose a apprendre.
    d'ailleurs si qqn peut me dire si il existe une méthode pour trouver une lettre ou une partie de mot dans une chaine de caractère de la même facon qu'il existe count() pour trouver le nombre de lettre ou partir de mot qui existe dans une chaine.
    par exemple trouver l'emplacement de tout les "AG" dans : "AATTAGAGAGTTAGTTTAGCC", et que le programme me dise :
    AG à la position 4,6,12,17.
    Merci!!!!

  7. #7
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Il existe une méthode pour récupérer l'indice de la première apparition d'une sous-chaine dans une chaine de caractères.

    Avec ton exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gene = 'AATTAGAGAGTTAGTTTAGCC'
    print gene.index('AG')
    On obtient 4. A partir de là tu peux concevoir une fonction récupérant également les apparations suivantes de 'AG' de façon récursive par exemple. Il faut aussi songer à gérer le cas où 'AG' n'apparait pas (peu probable mais on ne sait jamais!).

    Bon courage,


    Ju

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    salut,
    oui j'avais fais ça avec find.() ( qu'elle différence entre find() et index() ? ), ce que je n'arrive pas a faire c est a ce qu'il lise la séquence en entière et qu il m'indique justement toute les emplacements dans la séquence, mais j'essaye.
    merci pour ta réponse en tt cas

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lia_13 Voir le message
    salut,
    oui j'avais fais ça avec find.() ( qu'elle différence entre find() et index() ? ),
    index lève une exception s'il ne trouve pas (ce qui amène à une interruption du programme sauf si on intercepte l'exception) alors que find renvoie la valeur spéciale "-1"...

    Citation Envoyé par lia_13 Voir le message
    ce que je n'arrive pas a faire c est a ce qu'il lise la séquence en entière et qu il m'indique justement toute les emplacements dans la séquence
    Faut boucler. Une fois que find a trouvé AG à la position 4 faut recommencer la recherche à partir de chaine[5:] et etc.. jusqu'à ce que find renvoie -1. Attention toutefois à la valeur renvoyée qui sera la valeur relative au début de la recherche et non la valeur absolue dans la chaine...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Je réponds à la première question: Ton script marchait quand tu retournais un nombre impaire de fois ta chaine en entrée et ton script ne marchait pas quand tu retournais un nombre pair de fois. Donc selon le nombre de caractères de la phrase, tu avais le sourire ou la tristesse
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses !!!
    Flodelarad sait tu pourquoi il fait ça ???

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lia_13 Voir le message
    d'ailleurs si qqn peut me dire si il existe une méthode pour trouver une lettre ou une partie de mot dans une chaine de caractère...
    par exemple trouver l'emplacement de tout les "AG" dans : "AATTAGAGAGTTAGTTTAGCC", et que le programme me dise :
    AG à la position 4,6,12,17.
    Merci!!!!
    Pour en revenir à ce que j'avais dit...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def findAll(chaine, elem):
        pos=0
        while True:
            i=chaine[pos:].find(elem)
            if i == -1: break
            yield pos+i
            pos=pos+i+1
        # while
    # findAlll()
     
    for x in findAll("AATTAGAGAGTTAGTTTAGCC", "AG"):
        print x

    Résultat: 4, 6, 8 (que tu avais oublié), 12, 17...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    Sinon tu as aussi les expressions rationnelles, réduites à leur plus simple expression ici:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     import re
    indices = [ m.start() for  m in re.finditer("AG", "AATTAGAGAGTTAGTTTAGCC") ]
    print indices

    mais elles permettent aussi de rechercher des motifs plus compliqués.

Discussions similaires

  1. Passioné par le language python ?
    Par HeadHunterWeb2.0 dans le forum Général Python
    Réponses: 0
    Dernier message: 18/06/2013, 18h39
  2. Pile ou face en python, HELP
    Par ced1903 dans le forum Général Python
    Réponses: 4
    Dernier message: 30/04/2013, 13h11
  3. Portage language Python en MATLAB
    Par abidineb dans le forum MATLAB
    Réponses: 9
    Dernier message: 03/07/2012, 17h40
  4. Informations sur le language Python
    Par Jerico75 dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2010, 15h19
  5. [language C et UML] help
    Par ZaaN dans le forum UML
    Réponses: 7
    Dernier message: 08/08/2007, 14h06

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