begin process at 2012 05 23 23:48:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > CALCULATRICE, INTRODUCTION AU LAMBDA

CALCULATRICE, INTRODUCTION AU LAMBDA


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Classé sous :lambda, optimisation, fonction, calculatrice Niveau :Débutant Date de création :30/08/2009 Vu :3 400

Auteur : xeolin

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Ca fait plusieurs fois que je voix que des personnes ne savent pas utiliser le lambda en python.

c'est pourtant très important ! Je vais donc vous montrer cette source, pas pour son utilité mais plutôt comme un exemple d'utilisation du lambda.

Cette fonction est essentielle, elle vous permettra de gagner _BEAUCOUP_ de temps

Source

  • # -*- coding: cp1252 -*-
  • #correction du code de http://www.pythonfrance.com/codes/CALCULATRICE-SIMPLICISTE-SOUS-TKINTER_50496.aspx
  • #que je vous invite à aller voir, comme ce qui peut être nécessaire si on ne connait pas lambda
  • #je suis passé de 180 lignes à 25 (si on enlève les commentaires)
  • from Tkinter import*
  • chain=""
  • #ici on aura une action qui dépend du bouton qui à appelé cette fonction
  • def func(b):
  • global chain
  • if b=="C":chain="0"
  • elif b=="=":chain=eval(chain)
  • else : chain+=b
  • z.set(chain)
  • fen = Tk()
  • fen.title('Calculatrice')
  • a=""
  • i=1
  • j=1
  • #ici est la partie la plus importante.
  • for a in ["0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=","C"]:
  • Button(fen,text = a, command=lambda b=a:func(b)).grid(column=i,row=j)
  • j+=1 #
  • if j==5:j,i=1,i+1 #ma manière à moi d'organiser rapidement mes boutons
  • #je vais décomposer :
  • #dans un premier temps on va créer une liste de tout les boutons avec leur nom.
  • #afin d'éviter de créer une quinzaine de fonction, on va vouloir que chaque bouton
  • #bouton appèlent cette même fonction en donnant aussi leur nom
  • #par example, le bouton 8 appèlera la fonction func("8")
  • #
  • #Cependant, on ne peut pas dire :
  • #Button(fen,text = a, command=func(a))
  • #ça éxécuterai func(a) à la création du bouton, et donnerai None en fonction..
  • #
  • #C'est ici qu'intervient le lambda, fonction asser simple mais irremplassable :
  • #lambda b=a:func(b) retourne une fonction, func(a)
  • #et comme on le voulait le boutton reverra son nom.
  • #cella évitera de créer quinze fonctions.
  • #et d'avoir un code de 180 lignes au lieu de 25
  • z = StringVar()
  • entree=Entry(fen,textvariable=z)
  • entree.grid(row=0)
  • z.set(chain)
  • Button(fen,text='Quitter',command = fen.quit).grid(row=1)
  • fen.mainloop()
# -*- coding: cp1252 -*-
#correction du code de http://www.pythonfrance.com/codes/CALCULATRICE-SIMPLICISTE-SOUS-TKINTER_50496.aspx
#que je vous invite à aller voir, comme ce qui peut être nécessaire si on ne connait pas lambda
#je suis passé de 180 lignes à 25 (si on enlève les commentaires)
from Tkinter import*

chain=""

#ici on aura une action qui dépend du bouton qui à appelé cette fonction
def func(b):
    global chain
    if b=="C":chain="0"
    elif b=="=":chain=eval(chain)
    else : chain+=b
    z.set(chain) 

fen = Tk()
fen.title('Calculatrice')
a=""
i=1
j=1

#ici est la partie la plus importante.
for a in ["0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=","C"]:
    Button(fen,text = a, command=lambda b=a:func(b)).grid(column=i,row=j)
    j+=1              #
    if j==5:j,i=1,i+1 #ma manière à moi d'organiser rapidement mes boutons
#je vais décomposer :
#dans un premier temps on va créer une liste de tout les boutons avec leur nom.
#afin d'éviter de créer une quinzaine de fonction, on va vouloir que chaque bouton
#bouton appèlent cette même fonction en donnant aussi leur nom
#par example, le bouton 8 appèlera la fonction func("8")
#
#Cependant, on ne peut pas dire :
#Button(fen,text = a, command=func(a))
#ça éxécuterai func(a) à la création du bouton, et donnerai None en fonction..
#
#C'est ici qu'intervient le lambda, fonction asser simple mais irremplassable :
#lambda b=a:func(b) retourne une fonction, func(a)
#et comme on le voulait le boutton reverra son nom.
#cella évitera de créer quinze fonctions.
#et d'avoir un code de 180 lignes au lieu de 25
z = StringVar()
entree=Entry(fen,textvariable=z)
entree.grid(row=0)
z.set(chain) 
Button(fen,text='Quitter',command = fen.quit).grid(row=1)
fen.mainloop()

 Conclusion

Conclusion : Il faut absolument connaitre lambda, c'est simple à utiliser et une fois qu'on connais on s'en rappèle.

Et il y en a beaucoup qui malheureusement ne le connaissent pas.

Pour plus d'info : http://www.secnetix.de/olli/Python/lambda_function s.hawk


 Sources du même auteur

THE GAME OF LIFE, AVEC IMPLÉMENTATION GRAPHIQUE
Source avec une capture GENERATEUR DE CLEF RSA, TRÈS EFFICACE !
Source avec Zip Source avec une capture SERVEUR WEB EN PYTHON.
Source avec Zip SERVEUR HTTP PYTHON
Source avec Zip Source avec une capture SPAMMEUR, PYTHON

 Sources de la même categorie

CALCULATRICE (AIDE SUR LES FONCTIONS EN PYTHON) par matad0r
UTILISATION DES PROPRIÉTÉS EN PYTHON par FloZix
UNIX - MODULE TIME : TEMPS D'UNE FONCTION ALGORITHMIQUE AVEC... par loupmagic
Source avec Zip TUTORIEL - INTRODUCTION À WXPYTHON par aera group
Source avec Zip TUTORIEL - COMPILATION AVEC PY2EXE par aera group

 Sources en rapport avec celle ci

CALCULATRICE LIGNE DE COMMANDE - CALCUL EXACT par Clempython
CALCULATRICE (AIDE SUR LES FONCTIONS EN PYTHON) par matad0r
Source avec Zip Source avec une capture LE CALCULATOR DE RAYGOLD VERSION 3.1 par raygold
CONVERTISSEUR DE TEMPÉRATURE par skizo00o
Source avec Zip CALCULATRICE SIMPLICISTE SOUS TKINTER par elnabo

Commentaires et avis

Commentaire de erebos le 08/12/2009 15:53:51 5/10

Salut,
Pourquoi la syntaxe de lambda doit etre ici de la forme lambda b=a:func(b) et pas de la forme habituelle lambda a:func(a) ? l'interpreteur se plaigant que l'on ne passe pas d'argument a lambda?

en fait la syntaxe lambda x=y:func(x) permet l'appel direct de la fonction resultante sans lui passer le parametre a traiter. Voila le detail:

def func(b):
    return (b*2)

a=100

d=lambda a:func(a)
print d(100) #appel avec d() impossible

c =(lambda x:func(x))(a)
print c #resultat en utilisant la valeur de "a" directement mais "c" variable et non plus fonction

e= lambda p=a:func(p)
print e() #syntaxe permettqnt d'appeller la fonction e() directement avec la valeur de "a" sans la passer en parametre

Commentaire de xeolin le 16/04/2010 12:09:41

Oui l'interpréteur, renvoyais une erreur s'il n'y avait pas d'argument !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

wxWindow::RegisterHotKey [ par DoudouBidou ] Bonjour à tous(au passage Merci pour ce site, depuis le temps que je l'attends...)J'utilise wxPython pour réaliser mon interface graphique mais je n'a probleme avec os.path.getctime() [ par Bl0tCh ] Voilà, Donc cette fonction est censée me donner la date de creation du fichier (en secondes) mais le probleme c ke elle me donne la premiere date de c liste des process en cours [ par rodrigos ] Bonjour, Je suis sous windows et je cherche à obtenir la liste des process en cours sur le pc. La seule foncyion que j'ai rouvé est la fonc Zope: Contenu d'une liste en fonction d'une autre [ par keumlebarbare ] AU SECOURS!!!! Je suis tout ce qu'il y a de plus débutant en Zope, et je crois que si je continue à galérer comme ca, je me (re)met a Calculatrice qui trace les fonctions du second degré [ par micha_jonathan ] Bonjour, je suis actuelement entrain de créer une calculatrice en python qui permet de tracer les fonction du second degré. J'ai réalis Ou trouver la liste des fonction disponible... [ par CotCouture ] Bonjour j'aimerais savoir ou je peux trouver la liste des fonction disponible dans les logiciel office? Cot Couture fonction inconnue [ par xeolin ] je voulai creer cette discussion pour que l'on fasse un jeu : le but est : mettre des fonction que personne utilise ! ca parais bidon mais ca peut existe -t-il un équivalent de la fonction "call" sous Python? [ par Veust ] Bonjour, je suis en train d'ecrire un code sous python qui d'une part doit rentrer des donner dans une liste(jusque là facile) et d'autre part créer u Appel d'une fonction [ par Thomeux ] Bonjour,Je débute en python.J'essais de structurer mon Programme de la manière suivante         :Un fichier bibliothèque fonction,          :Un Fichi utiliser correctement les fonction, débutant niveaux 0+ dx [ par gwenc_hlan ] voilà, en gros, ça fait une semaine que je fait du python et en totu un peu plus de dix jours que je programme. engros : je débute.bon, voilà, je suis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,864 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales