Page 1 sur 1
Programmation de fonction
Posté : jeu. 11 déc. 2025 17:19
par J2M84
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
Re: Programmation de fonction
Posté : jeu. 11 déc. 2025 20:35
par domi
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 ?
Re: Programmation de fonction
Posté : jeu. 11 déc. 2025 22:29
par J2M84
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
Re: Programmation de fonction
Posté : ven. 12 déc. 2025 07:56
par mike913
Bonjour,
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()
Re: Programmation de fonction
Posté : ven. 12 déc. 2025 11:01
par J2M84
Merci des explications:
Les variables sont maintenant reconnues en global.
Tout fonctionne comme attendu.
Grand merci, l'ami!
Bonne journée
Re: Programmation de fonction
Posté : lun. 15 déc. 2025 18:07
par MSG
Bonjour ,
Sans déclarer de valeur globale , on peut récupérer plusieurs valeur d'une fonction sur un seul "return"
ex:
Re: Programmation de fonction
Posté : mar. 16 déc. 2025 18:38
par Bud Spencer
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]))
Eviter autant que possible les variables global sauf si ce sont des constantes