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

  FORUM HardWare.fr
  Programmation
  Python

  incorporer plusieurs variables dans du code python

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

incorporer plusieurs variables dans du code python

n°2244504
xunil2003
Posté le 01-12-2014 à 01:40:03  profilanswer
 

Bonjour,
 
Je suis débutant en python, j'utilise lpython 2.7.3.
J'ai fait une mini appli, une télécommande par lan.
j'ai créé une fonction pour lire le contenu d'un fichier de configuration .conf avec setion.
 

Code :
  1. def test5():
  2.     config = SafeConfigParser()
  3.     #config = configparser.RawConfigParser()
  4.     config.read('/home/laurent/.test2/tfbx6.cfg')
  5.     b = config.get('Box', 'boitier')
  6.     a = config.get('Box', 'appui')
  7.     t = config.get('Box', 'code_tlc')
  8.     print(b + a + t)


 
Le contenu du fichier de configuration

Code :
  1. [Box]
  2. boitier = hd1.freebox.fr
  3. appui = false
  4. code_tlc = 52968214


 
Là où je bloque c'est que je n'arrive pas à trouver la solution pour faire passer mes variables b, a et t ci-dessous

Code :
  1. def touche_1():
  2.     print "Touche 1"
  3.     #urllib2.urlopen("http://hd1.freebox.fr/pub/remote_control?key=1&repeat=1&long=false&code=52968214" ) # ok la ça marche sans les variables
  4.     urllib2.urlopen("http://%s/pub/remote_control?key=1&repeat=1&long=%s&code=%d" % (b, a, t))


 
Python me retourne le message d'erreur :

Code :
  1. Touche 1
  2. Exception in Tkinter callback
  3. Traceback (most recent call last):
  4.   File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
  5.     return self.func(*args)
  6.   File "telecommande-freebox6-4.py", line 531, in touche_1
  7.     urllib2.urlopen("http://%s/pub/remote_control?key=1&repeat=1&long=%s&code=%d" % (b, a, t))
  8. NameError: global name 'b' is not defined


 
comment dois-je faire ?
Merci


Message édité par xunil2003 le 01-12-2014 à 12:24:49
mood
Publicité
Posté le 01-12-2014 à 01:40:03  profilanswer
 

n°2244528
Devil'sTig​er
Jee & Cee on the rock !
Posté le 01-12-2014 à 14:44:40  profilanswer
 

def touche_1():
 
Doit devenir:
def touche_1(b, a, t):
 
Et tu dois l'appeler de la sorte:
 
touche_1(b, a, t)
 
 
Car sinon python va tenter de trouver, b, a et t, en dehors de toute fonction (en scope global donc), car le fait que tu lise b,a et t dans la fonction test5, fait que ces variables n'existent QUE dans test5 (et donc pas en dehors). Si tu veux les utiliser ailleurs, il faut les "transporter" d'une fonction à l'autre, et le code au dessus est ce qui te permettra d'y arriver => via les arguments de la fonction.


---------------
JunZZi | Jee & Cee
n°2244544
xunil2003
Posté le 01-12-2014 à 16:41:55  profilanswer
 

Bonjour;
 
j'ai rectifié la fonction :

Code :
  1. def touche_1(b, a, t):
  2.     print "Touche 1"
  3.     urllib2.urlopen("http://%s/pub/remote_control?key=1&repeat=1&long=%s&code=%d" % (b, a, t))


 
Mais quand j'appelle la focntion comme ceci :

Code :
  1. add_button(panel=panel1, image_button=image_bouton_1, x=12, y=65, command=touche_1(b, a, t))


 
Python m'affiche ce message d'erreur :

Code :
  1. Touche 1
  2. Traceback (most recent call last):
  3.   File "telecommande-freebox6-4.py", line 915, in <module>
  4.     add_button(panel=panel1, image_button=image_bouton_1, x=12, y=65, command=touche_1(b, a, t))
  5.   File "telecommande-freebox6-4.py", line 534, in touche_1
  6.     urllib2.urlopen("http://%s/pub/remote_control?key=1&repeat=1&long=%s&code=%d" % (b, a, t))
  7. TypeError: %d format: a number is required, not str


 
Merci.

n°2244551
ramnes
T fou, mec?
Posté le 01-12-2014 à 17:41:13  profilanswer
 

Le message d'erreur est explicite : ta variable t est une string alors que le formatage en %d demande un nombre, int ou float.
 
Il faut donc que tu fasses en sorte que t soit du bon type, ou que tu remplaces le %d par un %s.
 
Par ailleurs, je t'incite fortement à utiliser .format() au lieu de %.


---------------
[VDS] Divers oldies PCI, Teensy 2 [ACH] Corsair Strafe, vieux claviers

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

  incorporer plusieurs variables dans du code python

 

Sujets relatifs
Macro VBA Powerpoint - Suppression de plusieurs slidesFonction de hachage en python
prob avec mon codeprob avec mon code
Code html pour "connexion" avec identifiant et mot de passeScript python Raspberry à adapter et corriger
Damier sur pythonbesoin daide avec les variables uint16_t
Macro VBA Powerpoint pour supprimer plusieurs liens sélectionnésoptimisatio code switch / case
Plus de sujets relatifs à : incorporer plusieurs variables dans du code python


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR