... | ... | @@ -279,11 +279,37 @@ On aura dans les 2 cas `x=5` ; `y=10` et `z=25` |
|
|
|
|
|
Si on n’a besoin que du premier terme : on peut se contenter d'écrire `x, le_reste = resultat`
|
|
|
|
|
|
:warning: vérification à faire !
|
|
|
test avec python 3.7 : besoin d'un * avant "le_reste" pour "déballer" -
|
|
|
VERIFIER en Python 3.7 et 3.10 !
|
|
|
|
|
|
Vous pourrez vérifier que dans ce cas le_reste est un *tuple* équivalent à (y,z), c'est logique !
|
|
|
Mais on peut faire encore plus succinct, pour bien montrer que le reste ne nous intéresse vraiment pas :
|
|
|
`x, _ = resultat` ou même `x, = resultat `
|
|
|
( `_` = nom de variable valide (!) , mais par convention on sait qu'on ne s’en servira pas )
|
|
|
|
|
|
:warning: vérification à faire !
|
|
|
test en cours avec python 3.7 pour "déballer"
|
|
|
|
|
|
Petit exercice avec les tuples, A VERIFIER en Python 3.7 et 3.10 !
|
|
|
```python
|
|
|
# ligne est une chaîne de 4 "mots" minimum séparés par des espaces
|
|
|
x, y, z, *autres = tuple(ligne.split())
|
|
|
print("il y a un ou plusieurs mots après xyz : ", autres)
|
|
|
# on concatène les derniers mots si besoin pour faciliter le traitement
|
|
|
if len(autres) > 1:
|
|
|
fin_de_ligne = ""
|
|
|
for mot in fin_de_ligne:
|
|
|
fin_de_ligne += mot
|
|
|
else:
|
|
|
fin_de_ligne, = autres # on extrait l'élément du tuple
|
|
|
# le caractère '#" indique un commentaire, il faut donc couper avec split ; si # est en début de chaîne le résultat vaut ""
|
|
|
avant_commentaire = fin_de_ligne.strip().split("#")[0]
|
|
|
|
|
|
if avant_commentaire:
|
|
|
print("les 3 coordonnées sont =", x,y,z, " suivies du mot", avant_commentaire, "avant un commentaire éventuel" )
|
|
|
|
|
|
```
|
|
|
|
|
|
Si aucune variable ne récupère le résultat ce n’est pas gênant mais ce qui a été retourné est « perdu » _a priori_ car on n'a pas affecté de nom ; plus exactement on ne peut agir dessus (on pourrait épiloguer un peu plus, mais pour débuter cela suffira).
|
|
|
|
... | ... | |