Openclassroom chaine de caractére .format
Fermé
Tanahal
Messages postés
1
Date d'inscription
mercredi 30 janvier 2019
Statut
Membre
Dernière intervention
30 janvier 2019
-
30 janv. 2019 à 13:45
GrumbyOrSweety Messages postés 1 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 15 mai 2019 - 15 mai 2019 à 19:36
GrumbyOrSweety Messages postés 1 Date d'inscription mercredi 15 mai 2019 Statut Membre Dernière intervention 15 mai 2019 - 15 mai 2019 à 19:36
A voir également:
- Openclassroom chaine de caractére .format
- Caractère ascii - Guide
- Telecharger format factory - Télécharger - Conversion & Codecs
- Caractere speciaux - Guide
- Format epub - Guide
- Caractère spéciaux - Guide
1 réponse
GrumbyOrSweety
Messages postés
1
Date d'inscription
mercredi 15 mai 2019
Statut
Membre
Dernière intervention
15 mai 2019
15 mai 2019 à 19:36
15 mai 2019 à 19:36
Bonjour,
Votre fonction create_message pose deux problèmes :
1) elle ne renvoie rien, donc vous n’obtenez rien.
2) vous lui donnez deux arguments (character et quote) mais vous ne les utilisez pas.
Concernant le 1) :
Vous devez donner une instruction dans le corps de votre fonction ; dans le cas présent, soit une instruction print, soit une instruction return. Par ailleurs, lorsque vous lancez votre fonction, n’oubliez pas () à la fin de votre code.
Voici quelques exemples pour vous montrer ce que renvoie ou ne renvoie pas une fonction :
Cas 1 :
def message():
"JC Duss a dit : Quand te reverai-je ? pays merveilleux!"
print(message)
<function message at 0x7fe4f94b71b8>
Cela vous indique son nom et son adresse en mémoire. message sans les parenthèses est un objet fonction. Ce que vous saurez si vous demandez son type.
type(message)
function
Cas 2 :
def message():
"JC Duss a dit : Quand te reverai-je ? pays merveilleux!"
message()
Vous avez lancé la fonction, mais vous n’obtenez rien car vous ne demandez rien à cette fonction.
Et si vous demandez le type :
type(message())
NoneType
Cas 3 :
def message():
"JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
print(message())
None
Comme rien n’est renvoyé par votre fonction, python vous indique que l’élément est None.
Vous devez donc donner une instruction dans le corps de votre fonction, par exemple :
Cas 4 :
def message():
print("JC Duss a dit : Quand te reverrai-je ? pays merveilleux!")
message()
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Et si vous demandez le type de message() vous obtiendrez NoneType
Cas 5 :
def message():
return "JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
message()
'JC Duss a dit : Quand te reverrai-je ? pays merveilleux!'
Notez l’existence des quotes dans le renvoi de la fonction.
type(message())
str
Ici, la valeur retournée est un string (ce qui est plutôt rassurant comme résultat!).
Cas 6 :
def message():
return "JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
print(message())
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Notez ici l’absence de quotes. Le renvoi est le message que vous aviez demandé.
Utiliser return plutôt que print dans le corps de la fonction permet de manipuler la valeur renvoyée, ce qui peut être utile.
Concernant le 2) :
Je me place dans l’hypothèse où vous donnez comme instruction print() à votre fonction.
Si vous donnez des arguments à votre fonction, il faut les utiliser ! Sinon autant ne pas en mettre.
Cas 1 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message()
TypeError: message() takes exactly 2 arguments (0 given)
Effectivement, vous avez créé une fonction avec deux arguments (character et quote) mais vous n’en donnez aucun lorsque vous appelez la fonction.
Cas 2 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Vous êtes content car vous avez obtenu ce que vous vouliez. Mais en fait, tout ceci est inutile. Car quelques soient les arguments que vous indiquez, la même phrase sera toujours imprimée :
Cas 3 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message("Achille","J'ai mis une grosse trempe à Hector")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Fatalitas ! Vous retombez sur JC Duss et vous n’avez pas obtenu la phrase souhaitée sur Achille et Hector.
Cas 4 :
def message(character, quote):
print("{} a dit : {}".format(character,quote))
message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Vos deux arguments (character et quote) sont dans le corps de la fonction et lorsque vous appelez votre fonction en donnant à ces arguments les valeurs que vous souhaitez, vous obtenez le résultat ad hoc.
L’avantage d’utiliser une fonction à arguments est que vous pouvez l’utiliser pour donner les messages que vous voulez sans avoir à réécrire la fonction à chaque fois :
Cas 5 :
def message(character, quote):
print("{} a dit : {}".format(character,quote))
message1 = message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
message2 = message("Achille","J'ai mis une grosse trempe à Hector")
message1
message2
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Achille a dit : J'ai mis une grosse trempe à Hector
Ma réponse est quelque peu tardive et j’imagine que vous avez trouvé par vous-même la solution. Mais ces quelques lignes vous aideront peut-être à mieux comprendre les fonctions et l’intérêt des arguments.
Bonne continuation.
Votre fonction create_message pose deux problèmes :
1) elle ne renvoie rien, donc vous n’obtenez rien.
2) vous lui donnez deux arguments (character et quote) mais vous ne les utilisez pas.
Concernant le 1) :
Vous devez donner une instruction dans le corps de votre fonction ; dans le cas présent, soit une instruction print, soit une instruction return. Par ailleurs, lorsque vous lancez votre fonction, n’oubliez pas () à la fin de votre code.
Voici quelques exemples pour vous montrer ce que renvoie ou ne renvoie pas une fonction :
Cas 1 :
def message():
"JC Duss a dit : Quand te reverai-je ? pays merveilleux!"
print(message)
<function message at 0x7fe4f94b71b8>
Cela vous indique son nom et son adresse en mémoire. message sans les parenthèses est un objet fonction. Ce que vous saurez si vous demandez son type.
type(message)
function
Cas 2 :
def message():
"JC Duss a dit : Quand te reverai-je ? pays merveilleux!"
message()
Vous avez lancé la fonction, mais vous n’obtenez rien car vous ne demandez rien à cette fonction.
Et si vous demandez le type :
type(message())
NoneType
Cas 3 :
def message():
"JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
print(message())
None
Comme rien n’est renvoyé par votre fonction, python vous indique que l’élément est None.
Vous devez donc donner une instruction dans le corps de votre fonction, par exemple :
Cas 4 :
def message():
print("JC Duss a dit : Quand te reverrai-je ? pays merveilleux!")
message()
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Et si vous demandez le type de message() vous obtiendrez NoneType
Cas 5 :
def message():
return "JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
message()
'JC Duss a dit : Quand te reverrai-je ? pays merveilleux!'
Notez l’existence des quotes dans le renvoi de la fonction.
type(message())
str
Ici, la valeur retournée est un string (ce qui est plutôt rassurant comme résultat!).
Cas 6 :
def message():
return "JC Duss a dit : Quand te reverrai-je ? pays merveilleux!"
print(message())
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Notez ici l’absence de quotes. Le renvoi est le message que vous aviez demandé.
Utiliser return plutôt que print dans le corps de la fonction permet de manipuler la valeur renvoyée, ce qui peut être utile.
Concernant le 2) :
Je me place dans l’hypothèse où vous donnez comme instruction print() à votre fonction.
Si vous donnez des arguments à votre fonction, il faut les utiliser ! Sinon autant ne pas en mettre.
Cas 1 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message()
TypeError: message() takes exactly 2 arguments (0 given)
Effectivement, vous avez créé une fonction avec deux arguments (character et quote) mais vous n’en donnez aucun lorsque vous appelez la fonction.
Cas 2 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Vous êtes content car vous avez obtenu ce que vous vouliez. Mais en fait, tout ceci est inutile. Car quelques soient les arguments que vous indiquez, la même phrase sera toujours imprimée :
Cas 3 :
def message(character, quote):
print("{} a dit : {}".format("JC Duss","Quand te reverrai-je ? pays merveilleux!"))
message("Achille","J'ai mis une grosse trempe à Hector")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Fatalitas ! Vous retombez sur JC Duss et vous n’avez pas obtenu la phrase souhaitée sur Achille et Hector.
Cas 4 :
def message(character, quote):
print("{} a dit : {}".format(character,quote))
message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Vos deux arguments (character et quote) sont dans le corps de la fonction et lorsque vous appelez votre fonction en donnant à ces arguments les valeurs que vous souhaitez, vous obtenez le résultat ad hoc.
L’avantage d’utiliser une fonction à arguments est que vous pouvez l’utiliser pour donner les messages que vous voulez sans avoir à réécrire la fonction à chaque fois :
Cas 5 :
def message(character, quote):
print("{} a dit : {}".format(character,quote))
message1 = message("JC Duss","Quand te reverrai-je ? pays merveilleux!")
message2 = message("Achille","J'ai mis une grosse trempe à Hector")
message1
message2
JC Duss a dit : Quand te reverrai-je ? pays merveilleux!
Achille a dit : J'ai mis une grosse trempe à Hector
Ma réponse est quelque peu tardive et j’imagine que vous avez trouvé par vous-même la solution. Mais ces quelques lignes vous aideront peut-être à mieux comprendre les fonctions et l’intérêt des arguments.
Bonne continuation.