Problème en exercice

Résolu/Fermé
Noa19 - Modifié le 29 oct. 2021 à 13:56
 Noa19 - 29 oct. 2021 à 15:40
Bonjour,

Je m'entraine sur des exercices TP, et je galère sur un exercice ou il faut définir une fonction de multiplication. Je l'ai résolu avec
print()
, mais le prof m'as dis qu'il fallait que je le retourne en résultat.

Voici l'exercice et ce que j'ai fait en dessous :

>>> chaine_multiplication(6, 7) == '6 x 7 = 42'
True


Questio n: Définissez une fonction chaine_multiplication() paramétrer par 2 entiers a et b et qui renvoie la chaîne de la forme a x b=c, où c est le résultat .

Mon travail:

def chaine_multiplication(a,b):
    """
    """
    res= 'a' '+' 'x' + 'b' '+' '=' a*b 
    return  res


Je pense qu'il ya un problème dans les
'
ou quelque part avec les
+
.

Merci pour votre aide ne avance.

Configuration: Macintosh / Safari 15.0

11 réponses

mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
Modifié le 29 oct. 2021 à 14:37
Bonjour

Il y a plusieurs choses que tu dois comprendre avant de foncer tête baissée dans ton exercice.

La différence entre
print
et
return
:


Quand tu es dans un interpréteur python, la différence n'est peut-être pas évidente, car dans les deux cas, tu vois dans le résultat apparaître.

Cependant, les deux n'ont absolument rien à voir :
  • on peut faire plusieurs
    print
    dans une fonction, ce qui est écrit n'est pas réutilisable ;
  • on peut faire au plus un
    return
    dans une fonction (ensuite, la fonction est quittée) et la valeur retournée est réutilisable.


Ce petit exemple met en évidence la différence fondamentale entre
print
et
return
:

In [1]: def ajouter_print(x, y):
   ...:     print(x + y)
   ...: 

In [2]: def ajouter(x, y):
   ...:     return x + y
   ...: 

In [3]: z = ajouter_print(2, 3)
5

In [4]: print(z)
None

In [5]: z = ajouter(2, 3)

In [6]: print(z)
5


Les types

Toute variable python est typée. Le type définit la nature d'une variable et les opérations qu'on peut lui appliquer. Quelques exemple de types :
  • les entiers (ex :
    123
    ),
  • les chaînes de caractères (
    "123"
    ou
    '123'
    ),
  • les listes (
    [1, 2, 3]
    ,
    ["x", "yz", "t"]
    ),
  • les tuples (
    (1, 2, 3)
    ,
    ("x", "yz", "t")
    ),
  • les ensembles (
    {1, 2, 3}
    , ,
    {"x", "yz", "t"}
    ),
  • ...


Selon le type, certaines opérations sont possibles ou non, ou n'ont pas le même sens. Par exemple, l'addition de deux entier correspond à l'addition usuelle, tandis que l'addition de deux chaînes de caractères correspond à leur concaténation.

Construire une chaîne de caractère

En python, il existe plusieurs manière de créer une chaîne de caractères. Admettant que
x = 123
et
y = 456
et que tu veuilles construire une chaîne de caractère à partir de
x
et
y
, par exemple
"123 et 456"
.
  • Avec l'opérateur
    +
    (opérande gauche et droite : une chaîne de caractères) par exemple
    "ab" + "cd"
    retourne
    "abcd"
    .
    • Si tu veux concaténer une chaîne avec une variable n'en est pas une, il faut en général transformer cette variable en chaîne, soit avec la fonction
      str()
      , soit avec la fonction
      repr()
      :
      str(x) + " et " + str(y)
      .
  • Avec l'opérateur
    %
    (opérande gauche : une chaîne, opérande droite : un tuple ou dictionnaire) :
    • À l'aide d'un tuple :
      "%s et %s" % (x, y)
      retourne
      "123 et 456"
      (note que
      "%s"
      signifie qu'il faut utiliser
      str
      , et
      "%r"
      signifierait qu'il faut utiliser
      repr
      ; dans le cas des valeurs numériques il existe aussi d'autres formatages, notamment pour préciser le nombre de chiffres significatifs) ;
    • À l'aide d'un dictionnaire :
      "%(valeur1)s et %(valeur2)s" % {"valeur1" : x, "valeur2" : y}
      ;
  • Avec une f-string :
    f"{x} et {y}"
    correspond à
    "123 et 456"
    .


Tu devrais maintenant avoir tous les éléments en main pour bien comprendre et faire ton exercice :-)

Bonne chance
1
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
29 oct. 2021 à 14:33
peut-être aussi comprendre la différence entre une variable, telle que
lettre
, et une constante telle que
'lettre'
.
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802 > yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024
29 oct. 2021 à 14:39
Tout à fait exact, c'est d'ailleurs pour bien faire la distinction entre nom de variable et valeur de la variable que j'ai pris dans mes exemples
x = 123
et
y = 456
pour bien marquer la différence.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 Ambassadeur 1 552
26 oct. 2021 à 16:59
bonjour,

tu as en effet un problème avec les '.

montre comment tu as résolu avec print(), cela te donnera peut-être une piste.
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
26 oct. 2021 à 17:06
éventuellement, fais cet exercice, pour combiner une lettre et un chiffre:
lettre='a'
chiffre=2
code=  ??    # comment obtenir a2?
print (code)
0
'a' + '2' = a2 ?

c'est comme 'TO' + 'TO'= 'TOTO'
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
26 oct. 2021 à 17:23
et en utilisant les variables
lettre 
et
chiffre
?
0
oui,
code = 'lettre'+ 'chiffre'
print(code)
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
26 oct. 2021 à 17:38
tu as testé?
lettre='a'
chiffre=2
code = 'lettre'+ 'chiffre'
   # comment obtenir a2?
print (code)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ah oui,

Ca donne, lettrechiffre, j'ai eu ce problème avec mon exercice la formule en revenais quand j'exécutais.

Donc le problème est dans les ' ? je vais essayer et je reviens vers vous.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
26 oct. 2021 à 18:18
Ça n'est pas si compliqué.
Tu as deux variables qui contiennent une le chiffre 6, l'autre le chiffre 7.
Tu dois produire le texte '6 x 7 = 42', c'est la concaténation de 5 choses : '6', ' x ', '7', ' = ' et '42'. Trouver le 42 n'est pas si dur, et il ne reste qu'à produire et concaténer les 5 éléments nécessaires.
0
J'ai essayé avec les virgules du styles '6', ' x ', '7', et ca marche mais le prof veut sans virgule et sans print().
0
yg_be Messages postés 23346 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 24 novembre 2024 1 552
26 oct. 2021 à 23:15
à ta place, je commencerais pas des exercices plus simples.
0
Utilisateur anonyme
27 oct. 2021 à 08:40
Bonjour Noa

Sur le site utilise la coloration syntaxique d’abord ça conserve l’indentation qui est primordiale en Python mais en plus la couleur aide à lire et pas conséquent à détecter les erreurs.
Voir ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


res= 'a' '+' 'x' + 'b' '+' '=' a*b
toto = 'TO' + 'TO'


Regarde la couleur des + sur ces 2 linges.
Que constates tu? Qu’en déduis tu?
0
Bonjour, Whismeril

-Le + de la première ligne et le même que celui de la deuxième (on peut dire qu'il est allumé comme les = ou le *, il ,ne doit pas être comme ca ? et je remarque que les autres + entre ' ' ne sont pas rose comme le + du milieu
0
Bonjour, Whismeril

-Le + de la première ligne et le même que celui de la deuxième (on peut dire qu'il est allumé comme les = ou le *, il ,ne doit pas être comme ca ? et je remarque que les autres + entre ' ' ne sont pas rose comme le + du milieu.
0
Utilisateur anonyme
29 oct. 2021 à 12:58

on peut dire qu'il est allumé comme les = ou le *…..

je remarque que les autres + entre ' ' ne sont pas rose comme le + du milieu.


En effet, le fair qu’il soit « allumé » comme tu dis montre que c’est une instruction, alors qu’entre cotes c’est du texte.

Dans le cad « allumé » il permet de concaténer 2 textes en un seul, dans l’autre cas il ne permet rien

0
Bonjour,

Merci pour toutes les explications, je vois mieux maintenant tout me paraît plus simple.

C'était juste la concaténation qui me posait problème parce que je n'avais pas encore vu ça en cours .

Merci, pour votre aide
0