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 :

tout ce qui est def (ma_fonction) est incompatible avec fonctionnement du RANDOM? [Python 3.X]


Sujet :

Python

  1. #1
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2026
    Messages : 5
    Par défaut tout ce qui est def (ma_fonction) est incompatible avec fonctionnement du RANDOM?
    Bonjour à tous, cette question est probablement idiote, cas échéant ou lequel, je demande l'indulgence du forum où je suis débutant, tout comme chez Python. Voici la question:

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>> def mon_entier-au_hasard () :
    ...    import random
    ...    mon_entier_au_hasard = random.randint (0, 1000000)
    ...    print (mon_entier_au_hasard)
    ...

    Donc aucun affichage, et si je veux voir ce que cache la variable créée, j'aurai ça:

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> mon_entier_au_hasard
     < function mon_entier_au_hasard at 0x00720858>    # apparemment, une simlple adresse où ma variable loge

    Si je veux avoir des certitudes sur son type, je fais :

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> type (mon_entier_au_hasard)
    <class 'function'>

    Voilà donc ce que j'ai quand j'essaye piètrement de créer ma propre fonction. Alors que j'aimerais avoir ce que ce module offre au monde entier sans la moindre difficulté, c'est-à-dire ceci :

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import random
    >>> r = random.randint (0, 1000000)
    >>> print (r)
    14790

    Je pense que j'ai une lacune dans la façon de procéder. Mais il se trouve, peut-être, que le module lui-même ne soit pas adapté à ce genre de création ? qu'il y ait un autre module qui gère l'aléatoire et qui est adapté à tout ce qui est "def"?
    Merci à tous pour la réponse pertinente. Salutations + passablement honte des lacunes

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import random
     
    def maFonc()
        v = random.randint (0, 1000000)
        return(v)
     
    maFonc
    <function maFonc at 0x7f2003111dd0>
     
    maFonc()
    715226
    tu as un peu de lecture en retard.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 146
    Par défaut
    Tu as oublié les parenthèses.
    Et le tiret n'est pas valide dans un nom de fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def mon_entier_au_hasard():
        import random
        mon_entier_au_hasard = random.randint (0, 1000000)
        print (mon_entier_au_hasard)
    
    mon_entier_au_hasard()
    Après, cela est toujours améliorable.

  4. #4
    Invité
    Invité(e)
    Par défaut
    je me posais la question, et j'ai trouvé la réponse:
    Citation Envoyé par PEP8
    Les importations sont toujours placées en haut du fichier, juste après les commentaires et docstrings du module, et avant les globales et les constantes du module.
    cf. PEP 8 – Style Guide for Python Code

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 146
    Par défaut
    Placer le import random au début du fichier plutôt qu'à l'intérieur de la fonction fait en effet partie des améliorations possibles.

    Puisque le but de la routine semble être de générer un nombre au hasard et non de l'afficher, j'aurai également enlevé le print.
    Si besoin de l'afficher, faire cela là où c'est utile plutôt qu'à l'intérieur de la routine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import random
     
    def mon_entier_au_hasard():
        return random.randint (0, 1000000)
     
    print(mon_entier_au_hasard())

  6. #6
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2026
    Messages : 5
    Par défaut
    Merci bcp à tous. Evidemment, les perenthèses ont été oubliées, c'était cela. Le print est inutile, on est bien d'accord. Je reviens sur l'essentiel, malheurseusement, mon problème n'est pas résolu car, une fois la fonc crée, je n'ai toujours pas un entier. La machine m'informe que j'ai une fonction qui a l'air d'un entier généré au hasard, mais cet entier n'est pas opérationnel, pour Python il n'est soumis à aucun comportement d'entier, je ne peux y appliquer aucune opérande, opération (+, /, *) etc, pas plus que vérifier si mon entier est pair ou impair (mon_entier()%2==0), bref Python m'engueule.

    >>> mon_entier()
    87162
    >>> type (mon_entier())
    27161
    <class 'NoneType'>
    >>>

    Et bien évidemment, si j'essaye de convertir une fonction en un entier, il m'egueule :

    >>> int(mon_entier())
    904
    Traceback (most recent call last):
    File "<pyshell#22>", line 1, in <module>
    int(mon_entier())
    TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
    >>>

    Je prendrai volontier une référence aux sources, puisque,effectivement, j'ai une lecture en retard, mais pour l'instant j'ai pas réussi à tomber sur une documentation concrètement adaptée, malgré l'océan qu'il y en a. ça devrait être une doc sur les 'def'', je suppose.

  7. #7
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2026
    Messages : 5
    Par défaut
    Encore désolé, mon navigateur est Firefox, mon SO est Windows7, je ne vois aucune option pour insérer les bouts de code (sous IDLE) autrement que ce que ça a donné par copier-coller. J'ai essayé -(

  8. #8
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2026
    Messages : 5
    Par défaut
    donc en fait c'est 'return' la bonne instruction. Je n'ai pas tout de suite lu le dernier code. Je crois que c'est ça, 'return' renvoie la vraie veleur perçue comme nombre. merci

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 713
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 713
    Par défaut
    l'erreur est et reste l'absence du return

    sans return, la méthode ne renvoie rien (NoneType)
    un print affiche quelque chose à l'écran mais ne renvoie rien à l'appelant

    Dans certains langages, l'affectation d'une valeur au nom de la fonction donne la valeur de retour de la fonction (comme en VB6/VBA/...)

  10. #10
    Invité de passage
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2026
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2026
    Messages : 5
    Par défaut
    C'est ça, merci, à +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Enlever tout ce qui est nombre
    Par 123quatre dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2009, 23h02
  2. Attraper tout ce qui est tappé par le clavier
    Par tomy_libre dans le forum Débuter
    Réponses: 3
    Dernier message: 06/05/2009, 12h21
  3. Où trouver des documents pour tout ce qui est format de fichier ?
    Par Fresh75 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 14/07/2007, 16h32
  4. Réponses: 5
    Dernier message: 24/05/2006, 20h22

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