Un titre qui en dit long n'est - ce - pas ?

Me voila rendu au chapitre concernant les fonctions ( diantre ! On sent de suite que le niveau à monté ). On y retrouve pas mal d'informations et surtout pas mal de nouveau vocabulaire à démêler et assimiler (arguments, paramètres etc..)

Tranquillement donc je découvre ce qu'est une fonction et je pense avoir clairement compris que la fonction nous permettais d'alléger notre code d'une part mais aussi de rendre notre travail plus efficace en nous évitant ( si besoin ) de réécrire plusieurs fois les même choses.

Je me heurte ce soir (déjà) au premier exercice ( voila qui est déroutant ) et je fais donc appel à vous afin d'éclairer ma lanterne.

Nous nous situons à l'exercice e.44 dont voici la consigne :

Définissez une fonction ligneCar(n,ca) qui renvoie une chaîne de n caractère ca.
Comme à l'accoutumé, je commence par vous exprimez mon raisonnement :

On commence tout logiquement par appelé la fonction soit

Je définis ensuite trois variables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
compteur = 0
ret= str("ca")
liste= []
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
While a <= n:
    compteur = compteur + 1
    list.append(ret)
donc tant que la valeur utilisateur n'est pas atteinte on incrèmente le compteur
et on ajoute à ma liste la chaîne de caractère "ça"

Pour terminé je demande à la fonction de retourner et donc d'afficher ma liste, soit :

Qu'en est-il maintenant du corps principal du programme ? Les choses me semblent toute simples pourtant :

Je demande tout d'abord à l'utilisateur d'entrer une valeur qui viendra donc remplacer mon "n"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
valeur = raw_input("Veuillez entrer une valeur :")
nouveau paramètre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
afCa = "ca" ou éventuellement afCa = str("ca")
j'appel ensuite ma fonction en utilisant mes deux variables:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ligneCar (valeur, afCa)
Petite mise en situation (désolé au passage si mon poste paraît lourd mais disons qu'en écrivant tout ceci de manière détaillé, je me dis parfois qu'une illumination....Enfin vous voyez.)

L'utilisateur, entrer le chiffre 9.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
while a <= 9 :
a = a + 1
list.append(afCa) #soit ajouté un "ca" à ma liste.
Avec ça, il devrait donc me retourner la liste suivante :

ca, ca, ca, ca, ca, ca, ca, ca
Et pour ceux et celles qui préfère la version courte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
####################################
# Programme Python Type            #
# Sujet : exercice e.44            #
####################################
 
####################################
# Définire une fonction            #
# ligneCar(n, ca) qui renvoie une  #
# chaine de n caractere ca.        #
####################################
 
 
####################################
# Définition de(s) fonctions :     #
####################################
 
def ligneCar(n, ca):
    a = 0
    ret = str("ca")
    liste = []
    while a <= n:
        a = a + 1
        list.append(ret)
    return(liste)
 
 
####################################
# corps principal du programme     #
####################################
 
 
valeur = raw_input("Entrer une vleur:")
AfCa = "ca"
ligneCar(valeur, AfCa)

Ou se situe mon erreur ?