Bonjour.
je ré-apprends à programmer...
J'ai besoin d'un coup de main:
J'ai créé une fonction AouB() qui me permet de faire des choix en fonction de l'appui sur une touche A ou une touche B.
d=1 si A
d=2 si B
d= autre si ni A ni B
t1, t2, t3 sont des tableaux
def AouB(d):
if d==1:
c=1
rep=t1
elif d==2:
c=2
rep=t2
else:
c=0
rep=0
return c
return rep
puis j'appelle la fonction
AouB(d)
print(c)
print(rep)
et j'obtiens:
NameError: name 'c' is not defined
J'ai regardé plusieurs tutos et cours, je ne comprends pas où est mon erreur.
Merci de m'expliquer
Cdlt
Programmation de fonction
Modérateurs : Francois, Manfraid
-
domi
- Administrateur
- Messages : 3279
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Programmation de fonction
Bonjour,
Dans un premier temps je déplace le sujet qui n'a rien a faire dans la rubrique "Débutant".
Deuxièmement, c'est quel langage ? Python je suppose ?
dans ce cas mettre l'indentation sinon le code est illisible.
Et sans étudier le script, une chose me choque, pourquoi 2 "return" l'un derrière l'autre ?
Dans un premier temps je déplace le sujet qui n'a rien a faire dans la rubrique "Débutant".
Deuxièmement, c'est quel langage ? Python je suppose ?
dans ce cas mettre l'indentation sinon le code est illisible.
Et sans étudier le script, une chose me choque, pourquoi 2 "return" l'un derrière l'autre ?
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.
Re: Programmation de fonction
Bonsoir.
Merci de ta réponse.
Oui, j'utilise "Thonny" fourni avec l'installation.
J'ai mis 2 return car je n'ai pas réussi à concaténer les deux
Quant à l'indentation, il me semble l'avoir respectée.
Si, avant de sortir de ma fonction, je mets des prints, les résultats sont ceux attendus.
Ce que je ne maîtrise pas ou ne comprends pas, c'est l'usage des return pour récupérer mes données.
Le debug me dit que les dites-variables ne sont pas déclarées alors qu'elles fonctionnent bien dans la fonction.
Ça a l'air tout bête mais j'y ai passé ma journée.
PS: j'ai mis le post dans "Débutant", car c'est mon cas en programmation, utilisation des Gpio , etc, sur PI 3 B+.
Bonne soirée. Merci
Merci de ta réponse.
Oui, j'utilise "Thonny" fourni avec l'installation.
J'ai mis 2 return car je n'ai pas réussi à concaténer les deux
Quant à l'indentation, il me semble l'avoir respectée.
Si, avant de sortir de ma fonction, je mets des prints, les résultats sont ceux attendus.
Ce que je ne maîtrise pas ou ne comprends pas, c'est l'usage des return pour récupérer mes données.
Le debug me dit que les dites-variables ne sont pas déclarées alors qu'elles fonctionnent bien dans la fonction.
Ça a l'air tout bête mais j'y ai passé ma journée.
PS: j'ai mis le post dans "Débutant", car c'est mon cas en programmation, utilisation des Gpio , etc, sur PI 3 B+.
Bonne soirée. Merci
-
mike913
- Raspinaute
- Messages : 255
- Enregistré le : mar. 7 oct. 2014 09:46
- Localisation : Morsang / Orge - Essonne
- Contact :
Re: Programmation de fonction
Bonjour,
pour citer du code il faut utiliser les balises:
voici un exemple:
pour citer du code il faut utiliser les balises:
voici un exemple:
Code : Tout sélectionner
#!<Ton environnement>python3
# coding=UTF-8
# ----------------------------------------------------------------------------
# Import des librairie
# ----------------------------------------------------------------------------
import sys
etc ...
# ----------------------------------------------------------------------------
# Déclaration des constantes
# ----------------------------------------------------------------------------
Tes CONSTANTESrep
# ----------------------------------------------------------------------------
# Déclaration des Variables Globaleq
# déclaration de rep ici ou dans la fonction elle même
# ----------------------------------------------------------------------------
rep = []
#=================================
# puis j'appelle la fonction
# d=1 si A
# d=2 si B
# d= autre si ni A ni B
# t1, t2, t3 sont des tableaux
#=================================
def AouB(d):
global rep # si tu ne l'as pas déclarer dans les variables globales
if d==1:
c=1
rep=t1
elif d==2:
c=2
rep=t2
else:
c=0
rep=0
return c
# return rep
#=================================
# puis j'appelle la fonction
#=================================
def main():
R=AouB(d)
print(R)
print(res)
# ----------------------------------------------------------------------------
# début du script
# ----------------------------------------------------------------------------
if __name__ == "__main__":
main()
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net
Re: Programmation de fonction
Merci des explications:
Les variables sont maintenant reconnues en global.
Tout fonctionne comme attendu.
Grand merci, l'ami!
Bonne journée
Les variables sont maintenant reconnues en global.
Tout fonctionne comme attendu.
Grand merci, l'ami!
Bonne journée
Re: Programmation de fonction
Bonjour ,
Sans déclarer de valeur globale , on peut récupérer plusieurs valeur d'une fonction sur un seul "return"
ex:
Sans déclarer de valeur globale , on peut récupérer plusieurs valeur d'une fonction sur un seul "return"
ex:
- Fichiers joints
-
- Exemple_Return.PNG (7.9 Kio) Vu 84 fois
-
Bud Spencer
- Modérateur
- Messages : 1098
- Enregistré le : lun. 15 août 2016 21:38
Re: Programmation de fonction
Code : Tout sélectionner
def aoub(d):
t0 = ['x','x']
t1 = ['a','b','c','e']
t2= ['f','g','h']
c = d if d in [1,2] else 0
res = t0 if c == 0 else t1 if c == 1 else t2
return c, res
x = 1
r = aoub(x)
print ("c : " + str(r[0]))
print ("res : " + str(r[1]))
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).