Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1856 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [Python] Tuto Python

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[Python] Tuto Python

n°595094
kayasax
Posté le 21-12-2003 à 14:14:35  profilanswer
 

Edit : je vais regrouper mes questions sur le tutorial de G. SWINNEN (http://www.ulg.ac.be/cifen/inforef/swi/python.htm)
cela pourra peut être en aider d'autes ...
 
Salut, je continue toujours le tuto de python
 
j'ai un petit souci pour faire cet exercice:  
" Ecrivez un petit programme qui fait apparaître une fenêtre avec deux champs : l'un indique
une température en degrés Celsius, et l'autre la même température exprimée en degrés
Fahrenheit. Chaque fois que l'on change une quelconque des deux températures, l'autre est
corrigée en conséquence. "
 
J'ai essayé ca actuellement :


#conversion des °C en °F et vice-versa
 
from Tkinter import *
 
def toC(event):
    degreF=eval(far.get())
    degreC=(degreF-32)/1.8
    celcius.configure(text=degreC)
 
 
def toF(event):
    degreC=eval(celcius.get())
    degreF=degreC*1.8+32
    far.configure(text=degreF)
 
fen=Tk()
Label(fen,text="Température en Celcius : ",fg="navy" ).grid()
Label(fen,text="Temp en f :",fg="navy" ).grid(row=0,column=1)
celcius=Entry(fen)
celcius.bind("<Return>",toF)
celcius.grid(row=1)
far=Entry(fen)
far.grid(row=1,column=1)
far.bind("<Return>",toC)
fen.mainloop()


 
mais quand je rentre une valeur dans un champ et fait entree, l'autre champ ne se met pas à jour ... c'est bon l'instruction celcius.configure(text=degreC) pour un widget entry ?
 
Merci


Message édité par kayasax le 23-12-2003 à 15:23:34
mood
Publicité
Posté le 21-12-2003 à 14:14:35  profilanswer
 

n°595106
kayasax
Posté le 21-12-2003 à 14:32:18  profilanswer
 

kasax se répondant à lui meme ;-) :
en modifiant les fonctions comme ca , ca marche :


def toC(event):
    degreF=eval(far.get())
    degreC=(degreF-32)/1.8
    celcius.delete(0)
    celcius.insert(0,degreC)
 
 
def toF(event):
    degreC=eval(celcius.get())
    degreF=degreC*1.8+32
    far.delete(0)
    far.insert(0,degreF)

n°595111
Taz
bisounours-codeur
Posté le 21-12-2003 à 14:50:33  profilanswer
 

le eval c'est très bof. fait plutot float/int, c'est moins dangereux

n°595116
kayasax
Posté le 21-12-2003 à 15:09:30  profilanswer
 

oki

n°596148
kayasax
Posté le 23-12-2003 à 15:32:37  profilanswer
 

nouvelle question par rapport à l'exercice 68, toujours avec la lib Tkinter :
 
comment peut on redéfinir la couleur de remplissage d'un ovale dans un canvas ?
 
j'ai essaye ca :


from Tkinter import *
x,y=10,10
fen=Tk()
fen.title("test d'animation avec Tk" )
can=Canvas(fen,width=400,height=400,bg='dark grey')
can.pack(side=LEFT)
balle=can.create_oval(x,y,x+30,y+30,width=2,fill='yellow')
balle.configure(fill="red" )
fen.mainloop()


 
mais j'ai une belle erreur 'int' object has no atribute 'fill'
 
Taz ?? un ptit coup de main please ?


Message édité par kayasax le 23-12-2003 à 15:33:13
n°596245
Kristoph
Posté le 23-12-2003 à 19:39:11  profilanswer
 

C'est marrant, pour moi l'erreur que j'obtiens avec ton code est ça :

Code :
  1. balle.configure(fill="red" )
  2. AttributeError: 'int' object has no attribute 'configure'


 

n°596318
kayasax
Posté le 23-12-2003 à 22:42:02  profilanswer
 

ouaip c'est bien ca l'erreur

n°596341
Taz
bisounours-codeur
Posté le 23-12-2003 à 23:52:21  profilanswer
 

can.create_oval renvoie un int représentant l'id de l'oval si je me souviens

n°596375
kayasax
Posté le 24-12-2003 à 09:02:41  profilanswer
 

c'est bon j'ai trouvé :
on peut utiliser la methode itemconfigure pour modifier un objet dont on a le Id :

can.itemconfigure(balle,fill='white')


Message édité par kayasax le 24-12-2003 à 09:02:50
n°596386
kayasax
Posté le 24-12-2003 à 10:00:54  profilanswer
 

Nouvelle partie : les fichiers
la je copie texto le tuto et ce ne passe pas, j'ai un problème sur mon poste ou c'est un pb dans le tuto ?
 

>>> import pickle
>>> a,b,c=5,2.83,63
>>> f=open('monfichier.txt','w')
>>> pickle.dump(a,f)


 
==>

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in -toplevel-
    pickle.dump(a,f)
AttributeError: 'module' object has no attribute 'dump'


 

mood
Publicité
Posté le 24-12-2003 à 10:00:54  profilanswer
 

n°596393
Taz
bisounours-codeur
Posté le 24-12-2003 à 10:45:14  profilanswer
 

tu lis la doc :o

n°596408
kayasax
Posté le 24-12-2003 à 11:26:29  profilanswer
 

ben oui justement c'est le tuto fourni dans la section doc de python.org :O

n°596410
Taz
bisounours-codeur
Posté le 24-12-2003 à 11:27:22  profilanswer
 

oui ben justement sur python.org y a la doc du module pickle :o

n°596426
kayasax
Posté le 24-12-2003 à 12:01:14  profilanswer
 

:heink: le fait de relancer idle fait que ca marche... j'avais ptet oublie de fermer le fichier...
 
>>> a,b,c=5,2.1,55
>>> f=open("monfic.txt","w" )
>>> import pickle
>>> pickle.dump(a,f)
>>> pickle.dump(b,f)
>>> pickle.dump(c,f)


Message édité par kayasax le 24-12-2003 à 12:02:57
n°601315
alien cons​piracy
hardtrance addict
Posté le 03-01-2004 à 12:20:18  profilanswer
 

Ce tuto est génial mais personne ne sait où l'on peut recuperer les réponses aux problèmes posés dans le manuel ?  
De temps en temps je galère avant de trouver où j'ai fait une erreur.

n°601348
Taz
bisounours-codeur
Posté le 03-01-2004 à 13:31:08  profilanswer
 

ben si t'as des questions, pose-les

n°601370
alien cons​piracy
hardtrance addict
Posté le 03-01-2004 à 14:38:36  profilanswer
 

taz a écrit :

ben si t'as des questions, pose-les

Jusque ici j'ai réussi à trouver moi-même. Mais à l'avenir je n'hesiterais plus à partager avec vous mes problèmes et mes fonctions pourrâves.  :D


Message édité par alien conspiracy le 03-01-2004 à 14:38:50
n°607934
Rasthor
Posté le 11-01-2004 à 11:52:10  profilanswer
 

[:drapo]

n°607938
Taz
bisounours-codeur
Posté le 11-01-2004 à 12:00:21  profilanswer
 

on est bien d'accord que import * est fortement déconseillé

n°607942
alien cons​piracy
hardtrance addict
Posté le 11-01-2004 à 12:08:45  profilanswer
 

Oui mais lorsque l'on fait son code n'est-il pas mieux de taper un import * pour eviter de ce limiter ensuite une fois qu'on à fini recenser tout ce que l'on à utiliser et ne plus faire import *
 
Dans le cas de tkinter non plus ?!

n°607945
Taz
bisounours-codeur
Posté le 11-01-2004 à 12:14:07  profilanswer
 

jamais.
et justement quand tu programmes, il faut réduire tout de suite les possibiblités de collisions. faire des from import raisonnables ça c'est ok. ou alors des import as.


Message édité par Taz le 11-01-2004 à 12:15:22
n°616517
kayasax
Posté le 20-01-2004 à 13:02:42  profilanswer
 

vraiment bien foutu ce tuto !
puissant le python :
15 lignes de code pour afficher les nombres premiers de 0 à 1000 , qui dis mieux ??

n°616572
lorill
Posté le 20-01-2004 à 13:55:57  profilanswer
 

mieux

n°616755
kayasax
Posté le 20-01-2004 à 16:42:16  profilanswer
 

fé voir :O


# Trouver les nombres premiers (de 0 à 1000) en utilisant le crible d'Eratosthene
liste=['1']*1000
indice=2
while (indice<len(liste)):
    if liste[indice]=='1':
        coef=2
        while (indice*coef) < 1000:
            liste[indice*coef]='0'
            coef=coef+1
    indice=indice+1
 
print "Nombres premiers de 0 à 1000 :"
cpt=0
while cpt<len(liste):
    if liste[cpt]=='1':
        print cpt ,
    cpt=cpt+1



Message édité par kayasax le 20-01-2004 à 16:43:16
n°616799
Kristoph
Posté le 20-01-2004 à 17:20:58  profilanswer
 

Code :
  1. def findPremier( limit ):
  2.     crible = [1]*limit
  3.     for indice in range(2,limit / 2):
  4.         autre = ([1]*indice + ([1]*(indice-1)+[0]) * ((limit+indice) / indice))[0:limit]
  5.         crible = [crible[j] * autre[j] for j in range(len(autre)) ]
  6.     return crible[1:]
  7. print "Nombres premiers de 2 à 1000 :"
  8. crible = findPremier( 1000 )
  9. for i in range(len(crible)):
  10.     if crible[i]:
  11.         print i+2,


 
Mais je pense qu'on peut faire plus compact :o

n°616813
kayasax
Posté le 20-01-2004 à 17:28:59  profilanswer
 

pfuii j comprends rien a ton algo !  

n°616814
Kristoph
Posté le 20-01-2004 à 17:29:41  profilanswer
 

kayasax a écrit :

pfuii j comprends rien a ton algo !  
 


 
Pourtant, c'est le même que le tiens :D

n°616819
kayasax
Posté le 20-01-2004 à 17:31:07  profilanswer
 

lol
 
tiens une question en passant pourquoi le ++ n'est pas implemente en python ?
>>> cpt=1
>>> cpt++
SyntaxError: invalid syntax


Message édité par kayasax le 20-01-2004 à 17:34:06
n°616832
lorill
Posté le 20-01-2004 à 17:35:01  profilanswer
 

kayasax a écrit :

lol
 
tiens une question en passant pourquoi le ++ n'est pas implemente en python ?
>>> cpt=1
>>> cpt++
SyntaxError: invalid syntax


pour la même raison qu'il ne l'est pas en ruby : pas de sémantique claire.
 
mais t'as de la chance, y'a 2/3 ans, y'avait pas non plus de += :D

n°616850
kayasax
Posté le 20-01-2004 à 17:53:17  profilanswer
 

ah bah c'est tres bien += tu viens de m'apprendre que c'était possible en python cooool

n°617704
kayasax
Posté le 21-01-2004 à 12:51:24  profilanswer
 

Y a t'il un moyen simple de "nettoyer" une valeur récupérée d'un tuple ??
exemple :


eleve={}
eleve['lm']=26,1.86
eleve['jml']=36,1.84
eleve['dm']=36,1.75
print eleve
for i in eleve.keys():
    print "L'élève %s a %s ans et mesure %s m" % (i , eleve[i][0:1]  ,eleve[i][1:2])


 
affiche :
 
{'dm': (36, 1.75), 'lm': (26, 1.8600000000000001), 'jml': (36, 1.8400000000000001)}
L'élève dm a (36,) ans et mesure (1.75,) m
L'élève lm a (26,) ans et mesure (1.8600000000000001,) m
L'élève jml a (36,) ans et mesure (1.8400000000000001,) m
 
 

n°617710
Kristoph
Posté le 21-01-2004 à 12:55:23  profilanswer
 

C'est juste un problème d'affichage en fait. Utilise un formateur du style de %f qui est fait pour afficher des flottants déjà, et indique lui le nombre de chiffres après la virgule à considerer comme ça :
 
"%.5f"
 
Accessoirement, passe à Python 2.3.2 car quand j'ai testé le %s, ça m'a affiché correctement le nombre :)

n°617767
kayasax
Posté le 21-01-2004 à 13:35:36  profilanswer
 

print "L'élève %s a %s ans et mesure %.2f m" % (i , eleve[i][0:1]  ,eleve[i][1:2])
TypeError: float argument required
 
mes 2 dernieres valeurs sont des tuples et pas des float donc je ne peux pas faire ca.  
Ce que je voudrais surtout c'est qu'il ne m'affiche pas les parentheses ni la virgule (en gros convertir un tuple en float ou string)
 
sinon je suis déja en v 2.3.2-1
 
A+

n°617809
Kristoph
Posté le 21-01-2004 à 14:06:40  profilanswer
 

Tu peux soit exmploser ton tuple comme ça :

Code :
  1. a,b = (1,2)

, soit tu fais ça :

Code :
  1. >>> b = (1,1.5)
  2. >>> b[0]
  3. 1
  4. >>> b[1]
  5. 1.5

n°617823
kayasax
Posté le 21-01-2004 à 14:10:46  profilanswer
 

Merci Kristoph ca roule !
  print "L'élève %s a %s ans et mesure %s m" % (i , eleve[i][0:1][0]  ,eleve[i][1:2][0])

n°662143
kayasax
Posté le 03-03-2004 à 14:53:44  profilanswer
 

grrr... j'ai du mal à trouver ce que je cherche dans leur doc en ligne, c'est assez mal foutu je trouve...
j'ai créé une classe qui herite de la classe scale maintenant on me demande de l'entourer d'une bordure avec une couleur différente.
J'arrive à faire la bordure avec ca : self.controle[i].configure(bd=2,relief=SOLID) mais pas a changer sa couleur qq sait comment faire ?
Merci
 

n°663052
kayasax
Posté le 04-03-2004 à 16:31:15  profilanswer
 

hou pinaise pétage de plombs là !!
si quelqun a fait ce tuto (ex n° 157) merci de me le dire parceque je ne comprends pas mon erreur .
Thanks

n°663836
chaica
Posté le 05-03-2004 à 01:22:41  profilanswer
 

Y'a quoi que tu ne comprends pas?

n°663871
kayasax
Posté le 05-03-2004 à 08:27:51  profilanswer
 

euh...en fait j'ai trouvé ma connerie probleme de working directory, désolé

n°667119
kayasax
Posté le 08-03-2004 à 12:21:29  profilanswer
 

pour ma 1ere appli (objet) est ce que qqun peut confirmer que ce que j'ai fait est correct par rapport aux principes de la POO ??
sujet : creer une appli avec un canevas et un scale qui fera varier la taille d'un cercle dessiné dans le canevas :
 


from Tkinter import *
class monAppli(Frame):
    def __init__(self,boss=None,larg=100,haut=150):
        Frame.__init__(self)
        self.configure(width=larg,height=haut)
        self.can=Canvas(self,width=larg,height=haut,bg='ivory')
        self.can.pack(side=TOP)
        self.cercle=self.can.create_oval(50,50,150,150,fill="black" )
        Scale(self,orient=HORIZONTAL,width=20,label="taille",from_=10.,to=200.,showvalue=1,command=self.retaille).pack()
                 
    def retaille(self,size):
        self.can.delete(self.cercle)
        self.cercle=self.can.create_oval(50,50,50+int(size),50+int(size),fill="black" )
               
##code test###
if  __name__=="__main__":
    root=Tk()
    monAppli(root,300,300).pack()
    root.mainloop()
 


 
Merci, a+


Message édité par kayasax le 08-03-2004 à 12:21:54
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [Python] Tuto Python

 

Sujets relatifs
tuto sur la manipulation et la création de fichiers et dossiers[PYTHON]Ecrire dans un terminal caractère par caractère [ RESOLU ]
[python] c'est quoi votre éditeur pour python?[Python] "Compilateur" Psyco qui booste le code Python ?
[Python] Comment créer un fichier ?[Python] JPython : besoin de votre avis !
#define en python[Python@Blender] Ligne de commande pour executer un script python ?
(tuto) Virez EasyPHP et prenez le contrôle!faire d'un programme python un executable windows (.exe)
Plus de sujets relatifs à : [Python] Tuto Python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR