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 :

Utilité de la fonction eval ?


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Azerbaïdjan

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Par défaut Utilité de la fonction eval ?
    Bonjour ! Me levant de si bon matin pour coder dans la bonne humeur je me pose une simple question, j'ai plusieurs fonctions :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    from scipy.integrate import quad
    from math import exp
     
    def rectanglegauche(f,a,b,n):
      S = 0
      x = a
      pas = (b - a) / n
      for i in range(n):
        S += f(x)
        x += pas
      return (S * pas)
     
    def rectangledroit(f,a,b,n):
      S = 0
      pas = (b - a) / n
      x = a + pas
      for i in range(n):
        S += f(x)
        x += pas
      return (S * pas)
     
    def milieu(f,a,b,n):
      S=0
      pas = (b-a)/n
      x=a + pas/2
      for i in range(n):
        S+=f(x)
        x+=pas
      return (S*pas)
     
    def trapeze(f,a,b,n):
      pas = (b-a)/n
      S=0
      x=a
      for i in range(n):
        S+=f(x)+f(x+pas)
        x+=pas
      return(S * pas/2)
     
    def simpson(f,a,b,n):
      S = 0
      pas = (b-a) / (2*n)
      valgauche = f(a)
      x = a
      for i in range(n):
        x += pas
        S += valgauche + 4 * f(x)
        x+= pas
        valgauche = f(x)
        S += valgauche
      return (S * pas / 3)
    Et je voudrai tous les comparer d'un coup, avec la valeur n qu'on choisit, mon professeur a donc utiliser :
    n = eval(input("n?"))

    puis à utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    print("MethodeRectanglegauche:")
    print(rectanglegauche(f,0,2,n))
    print("Méthode␣rectangle␣droit")
    print(rectangledroit(f,0,2,n))
    print("Méthode␣point␣milieu")
    print(milieu(f,0,2,n))
    print("Méthode␣trapèze:")
    print(trapeze(f,0,2,n))
    print("Méthode␣simpson:")
    print(simpson(f,0,2,n))
    print("Valeur␣obtenue␣avec␣quad,␣et␣erreu")
    print(quad(f,0,2))
    Quand j'enlève le eval, ça ne marche plus, je ne comprends pas l'utilité de cette fonction.

    Je vous remercie

  2. #2
    Expert confirmé

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

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

    eval() évalue l'argument qui lui est passé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> n = input("n ?: ")
    n ?: 74
    >>> n
    '74'    # sans eval == charactères '74'
    >>> n = eval(input("n ?: "))
    n ?: 13
    >>> n
    13      # avec eval == entier 13
    Toutefois eval() est à proscrire dans ton cas précis. Une entrée utilisateur n'est jamais sûre, si l'on entre une commande son évaluation peut entrainer son exécution.

    En général on met les entrées utilisateur dans une fonction pour pouvoir les rappeler.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def get_value():
        while 1:
            n = input('Entrez un nombre (Q pour quitter): ')
            if n in ('q', 'Q'):
                sortie du programme
     
            try:
                return int(n) # ou float(n)
            except ValueError:
                print('Entrez un nombre seulement')

Discussions similaires

  1. Fonction eval en java ?
    Par ramislebob dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 00h22
  2. Parsage avec la fonction eval
    Par alain31tl dans le forum Langage
    Réponses: 12
    Dernier message: 23/11/2005, 15h27
  3. Simuler la fonction eval
    Par topwl dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 26/08/2005, 01h44
  4. Existe-t-il une fonction Eval() sous Delphi ?
    Par Hell dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2004, 17h45
  5. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42

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