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 :

Fonction: retour à telle ligne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Par défaut Fonction: retour à telle ligne
    Bonsoir,

    Je me demandais s'il existait une fonction me permettant de spécifier un retour à une certaine ligne du script.
    Par exemple, au sein d'une boucle, si telle condition est vérifiée, tout va bien on continue. Mais si cette condition n'est pas vérifiée, j'aimerais insérer une fonction qui me permet de spécifier au programme qu'il faut qu'il reprenne le script depuis telle ligne en amont de la boucle.

    Connaissez vous une fonction de ce type, et comment l'utiliser ?

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,
    À ma connaissance, le "goto" n'existe pas en Python…
    Par contre, des fonctions, des boucles imbriquées existent!

    Il suffit de positionner le code dans une boucle "while", et de n'en sortir que lorsque "la condition n'est pas vérifiée".

    Clodion

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Par défaut
    Je ne suis pas sur que le while conviendrait à mon script, puisque si la condition n'est pas vérifiée, je veux que le programme sorte de la boucle, revienne avant et me ré exécute la ligne qui va modifié ma variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import urllib
    iput=raw_input("Enter the protein's code (ex: 4S18) : ")
    url=urllib.urlopen("http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=pdb&compression=NO&structureId="+str(iput))
    pdbfile=url.readlines()
     
    for k in range (len(pdbfile)):
        if pdbfile[k][0:6]=="COMPND":
            if pdbfile[k][11:20]=="MOLECULE:":
                    print "Protein :",pdbfile[k][21:]
        if pdbfile[0][0:5]=="<html":
            print "There is no proteins associated to this code"
    En gros, c'est un script qui me permet d'ouvrir un fichier contenant des infos sur une protéine à partir d'un code à 4 caractères (ex: 4S18). Si le code est valide, et donc qu'il y a une protéine associée à celui-ci, c'est bon et le script continue ensuite. Mais si ce n'est pas le cas, je voudrais que le programme retourne à la 2eme ligne de façon à ce que l'utilisateur puisse re-entre une nouveau code. Pour ne pas avoir à run le programme à chaque code inexistant

  4. #4
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par karuzel Voir le message
    Je ne suis pas sur que le while conviendrait à mon script, puisque si la condition n'est pas vérifiée, je veux que le programme sorte de la boucle, revienne avant et me ré exécute la ligne qui va modifié ma variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import urllib
    iput=raw_input("Enter the protein's code (ex: 4S18) : ")
    url=urllib.urlopen("http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=pdb&compression=NO&structureId="+str(iput))
    pdbfile=url.readlines()
     
    for k in range (len(pdbfile)):
        if pdbfile[k][0:6]=="COMPND":
            if pdbfile[k][11:20]=="MOLECULE:":
                    print "Protein :",pdbfile[k][21:]
        if pdbfile[0][0:5]=="<html":
            print "There is no proteins associated to this code"
    En gros, c'est un script qui me permet d'ouvrir un fichier contenant des infos sur une protéine à partir d'un code à 4 caractères (ex: 4S18). Si le code est valide, et donc qu'il y a une protéine associée à celui-ci, c'est bon et le script continue ensuite. Mais si ce n'est pas le cas, je voudrais que le programme retourne à la 2eme ligne de façon à ce que l'utilisateur puisse re-entre une nouveau code. Pour ne pas avoir à run le programme à chaque code inexistant
    Bonsoir,
    Je n'ai pas assez de connexion pour essayer, mais:
    Mettre de "input" à "print("there is no…" dans une fonction…
    Ajouter un "return" à la fin du "for" pour retourner les renseignements ET ajouter un "return" juste après le "print("There is no…" renvoyant " None, ou autre chose.
    À l'extérieur de la fonction, faire une boucle "while" vérifiant que le résultat n'est pas "None" et lancer la fonction…

    Clodion

    PS: je ne peux pas tester, mais quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import urllib
    def trouve_prot():
        iput=raw_input("Enter the protein's code (ex: 4S18) : ")
        url=urllib.urlopen("http://www.rcsb.org/pdb/download/downloadFile.do?fileFormat=pdb&compression=NO&structureId="+str(iput))
        pdbfile=url.readlines()
     
        for k in range (len(pdbfile)):
            if pdbfile[k][0:6]=="COMPND":
                if pdbfile[k][11:20]=="MOLECULE:":
                        print "Protein :",pdbfile[k][21:]
            if pdbfile[0][0:5]=="<html":
                print "There is no proteins associated to this code"
                return None
        return "le truc qui a ete trouve"
     
    while True:
        rep = trouve_prot()
        if rep:
            break
     
    # suite traitement

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Par défaut
    Bonjour,

    Super, ton script fonctionne parfaitement, même si j'ai pas tout compris. Comment fonctionne les return svp? j'arrive pas vraiment à comprendre, surtout le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return "le truc qui a ete trouve"
    .
    En tout cas merci beaucoup

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Il est temps de consulter un tuto pour apprendre les bases...

  7. #7
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par karuzel Voir le message
    Bonjour,

    Super, ton script fonctionne parfaitement, même si j'ai pas tout compris. Comment fonctionne les return svp? j'arrive pas vraiment à comprendre, surtout le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return "le truc qui a ete trouve"
    .
    En tout cas merci beaucoup
    Bonjour,
    Quand même! Il faut commencer par les tutoriels Python!! Le "return" fait partie de la structure de base des fonctions!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def ma_fct(x):
        x += 1
        return x
    retour = ma_fct(3)
    print(retour)
    Il n'y a pas grand chose à comprendre dans le script; ce qui était déjà fait:
    1) après ouverture et lecture du fichier "pdb" recherché, on entre dans la boucle,
    2) si la structure recherchée ("COMPND" puis "MOLECULE") est trouvée, le nom est affiché
    3) si la fin de fichier est trouvée alors est affiché "pas trouvé".

    => pour recommencer si la recherche n'a rien trouvé:
    3) on renvoie "None" pour que la boucle extérieur refasse un passage
    4) après la boucle de la fonction on retourne quelque chose de différent (n'importe quoi sauf "None") ce qui permet d'entrer dans le "if rep:" et donc de sortir de cette boucle pour continuer le script.
    S'il n'y a rien d'autre à sortir du fichier que le nom de la protéine recherchée, il serait possible de sortir (par un "return True" du numéro 2).
    Mais le fichier semble contenir pas mal d'informations autres qui peuvent avoir un intérêt pour la suite. Et là, le fichier pourrait être transmis dans le "return" afin de pouvoir effectuer d'autres traitements.

    Si ce n'est pas assez clair, outre compulser les tutoriels, il faut poser les questions, le forum est fait pour cela!

    Clodion

    @ marco056 +1; et désolé pour la redondance!

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/12/2012, 18h35
  2. Réponses: 6
    Dernier message: 03/10/2012, 22h51
  3. Retour à la ligne dans une fonction
    Par labartho dans le forum Formules
    Réponses: 0
    Dernier message: 25/09/2012, 10h18
  4. Réponses: 3
    Dernier message: 20/12/2010, 23h07
  5. [SQL] Fonction split et retour à la ligne
    Par trihanhcie dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/06/2006, 15h42

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