Exercice sur les fonctions
Résolu
Theo_0055
Messages postés
273
Date d'inscription
Statut
Membre
Dernière intervention
-
Theo_0055 Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Theo_0055 Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Bonjour,pouvez vous m'aider svp a faire les quelques questions indépendantes de cette exercice
1)Ecrire la fonction repeter qui prend en argument un mot,choisit un entier n au hasard être 2 et 7,et renvoie le mot répété fois,séparés par des +
Le résultat attendu est "papa+papa" par exemple si n=2
J'ai essayé de le faire mais j'obtiens toujours a la fin +None,comment faire pour m'en debarasser
1)Ecrire la fonction repeter qui prend en argument un mot,choisit un entier n au hasard être 2 et 7,et renvoie le mot répété fois,séparés par des +
Le résultat attendu est "papa+papa" par exemple si n=2
import random
def lundi(mot):
n=random.randint(2,7)
for i in range(n):
print(mot,end="")
print("+",end="")
J'ai essayé de le faire mais j'obtiens toujours a la fin +None,comment faire pour m'en debarasser
9 réponses
-
Bonjour,
Après le dernier mot il ne faut pas de +, donc peut être rajouter un test pour imprimer "+" ou un saut de ligne quand c'est le dernier mot.
La fonction doit "renvoyer" le mot répété. Est-ce bien pareil que imprimer ? Ou ne serait-ce pas plutôt un return avec une variable qu'il faudrait faire ?
-
Désolé j'ai pas trop compris ce que vous voulez dire
-
Oui c'est ça que je sais pas faire
-
il peut y avoir plusieurs façon de faire,
- dans la boucle, faire un test pour savoir si c'est la dernière occurence et ne pas rajouter le "+"
- faire une boucle n -1 fois et en sortie imprimer une nouvelle fois mot.
bis : La fonction doit "renvoyer" le mot répété. Est-ce bien pareil que imprimer ? Ou ne serait-ce pas plutôt un return avec une variable qu'il faudrait faire ?
-
-
Et aussi comment eviter d'avoir none a la fin
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour maintenant j'ai reussi
-
import random def lundi(mot): n=random.randint(2,7) for i in range(n): print(mot,end="") print("+",end="") return(mot) x=lundi('salut') print(x)-
Je comprends ton None !!! Un print de x sans return dans la fonction = None
Comme je l'ai indiqué, rappelles toi ma remarque initiale, la fonction doit "renvoyer" le mot répété.
Donc ta solution avec des print dans la fonction ne répond pas à l'exercice. Il faut que la chaine retournée par le return contienne, non pas la valeur de départ, cela ne sert à rien, mais une chaine avec la concaténation.
Tu devrais voir les opérateurs de chaines
-
-
Donc,pour cette question je dois pas utiliser print?
Plus tard j'essaierais encore d'y réfléchir-
De toute façon tu dois te replonger dans l'exercice. Car quand n=2, ton code n'affiche pas salut+salut mais salut+salut+salut ! Tu as caché le défaut du + en fin de chaine.
Moi quand je lis l'énoncé je comprends que la fonction doit retourner une chaine "salut+salut". Et pourquoi appeler ta fonction lundi, ce n'est pas non plus ce qui est demandé. Je me souviens de professeurs qui auraient testérepeter("papa")==> note 0/20 la fonction ne se lance même pas.
Le squelette de ton code devrait être.import random def repeter(mot): n=random.randint(2,7) motsplus="" for i in range(n): ...... return(motsplus) x=repeter("salut") print(x)
et dans le corps utiliser des fonctions de concaténation de chaines de caractères. cf lien plus haut.
-
-
Merci de votre aide,je l'ai fait
import random def repeter(mot): n=random.randint(2,7) motsplus="" for i in range(n-1): motsplus+=mot+"+" motsplus+=mot return(motsplus) x=repeter("salut") print(x) -
Merci c'est grâce a vous