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 :

Comment relancer une fonction?


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    CPGE PCSI
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CPGE PCSI

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Par défaut Comment relancer une fonction?
    Bonjour à tous.
    Je suis en filière PCSI et est un projet d'informatique à rendre, il faut créer un démineur en utilisant python.
    Je bloque sur un élément du code.
    Quand le joueur perd la partie j'aimerais qu'il est la possiblité de relancer la partie directement depuis la console avec un input(), y a t'il un moyen de relancer la fonction grace à une ligne de code ou est-ce plus compliqué?
    merci de vos réponses.
    Bonne soirée à tous.


    P.S je met le code en pièce jointe
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Salut,
    Citation Envoyé par Xiderni Voir le message
    y a t'il un moyen de relancer la fonction grace à une ligne de code ou est-ce plus compliqué?
    Soit une fonction f, si on écrit:
    elle sera lancéeappelée successivement (et inconditionnellement) 3 fois.
    Et si vous voulez qu'elle soit appelée à la condition d'une entrée utilisateur, il va falloir ajouter la saisie, tester la condition, arranger le tout dans une boucle...
    Donc c'est (un peu) plus compliqué qu'une simple ligne de code.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    CPGE PCSI
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CPGE PCSI

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Par défaut
    Ok merci beaucoup!

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 69
    Par défaut
    ou sinon tu peux réaliser une boucle infinie qui terminera une fois ton action réalisée:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while(1):    #boucle infinie
          f()
     
     
    f():
          #ton code
          break #termine la boucle while

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par BoorBox Voir le message
    (...)
    c'est très faux ça, tu ne dois même pas pouvoir déclarer f en écrivant le code tel quel, Python vomit un "break outside loop"

    et même si Python l'autorisait (par laxisme), l'appel d'une fonction implique qu'on empile son adresse sur la stack et qu'on crée un nouveau contexte pour la fonction appelée, il hors de question d'agir sur le flot d’exécution de la fonction appelante (__main__ ?)

    au mieux tu peux mettre ton appel de fonction dans une boucle for() ou dans un while mais dans ce cas la condition d'arrêt est elle aussi dans le while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i = 0
    while True:
       f()
       i += 1
       if i == 5:
          break

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 69
    Par défaut
    Effectivement. J'ai vraiment écrit n'importe quoi, je m'en excuse.
    Il y a cette solution mais elle force la fonction a retourner un bouléen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(1)
       if(f()):
           break
     
     
    def f():
        #ton code
        return 1

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut, et meilleurs voeux

    Citation Envoyé par BoorBox Voir le message
    Il y a cette solution mais elle force la fonction a retourner un bouléen
    (...)
    encore raté ça s'écrit booléen et ce que retourne la fonction n'en est pas un, les booléens en Python c'est True et False.

    au delà ce n'est pas hyper clair, si la fonction retourne tout le temps la même valeur (return 1) la boucle while ne sert à rien, pour tenter de clarifier on pourrait plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def f():
       return True if machin else False
     
    while True:
       if f():
          break
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def():
       return True if truc else False
     
    while f():
       pass

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2018
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 69
    Par défaut
    Meilleurs vœux!
    Effectivement faut vraiment que je m'améliore à donner des réponses complètes et correctes.
    Mais le if dans notre boucle si on lui envoie 1 le considère comme True, non?
    Après c'est sur que c'est mieux de retourner TRUE ou FALSE.

  9. #9
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par BoorBox Voir le message
    Mais le if dans notre boucle si on lui envoie 1 le considère comme True, non?
    c'est plutôt l'inverse en fait, Python considère True comme valant 1
    si on renvoie 0 le if considèrera la condition comme fausse (False), si on renvoie n'importe quoi d'autre il considèrera la condition comme réussie (True) donc on pourrait aussi bien avoir return 156

Discussions similaires

  1. [JQuery + JSP]Comment relancer une fonction sur un load ?
    Par GrooveRage dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/02/2009, 18h21
  2. Réponses: 8
    Dernier message: 20/12/2004, 15h14
  3. Comment lancer une fonction
    Par Elois dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 21/04/2004, 19h10
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

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