4: Types

À partir de cette leçon, les exemples et les boites de données aurons des b0uttons étiquetés Ouvrir en console et Visualiser. Utilisez ces boutons pour aider à résoudre les erreurs et à explorer le code.

Dans le Programme Bonjour, monde !, nous avons vu que Python a la capacité de répéter une phrase à l’utilisateur. En plus, nous avons vu plusieurs exemples d’arithmétique avec des chiffres. Les chiffres et les phrases sont des objets fondamentalement différents et ils causent une erreur Python quand nous essayons de les mélanger de façon incorrecte.

Exemple
Essaie de comparer une chaîne et un chiffre.

Comme vous pouvez voir, on reçoit une erreur qui dit que les deux arguments sont de genres différents. Cette erreur est une bonne introduction pour le reste de la leçon.

▪   "Bonjour, monde !" est une valeur de type chaîne (string en anglais), qui a l’abréviation str en Python. Une chaîne est n’importe quelle séquence de chiffres, lettres et ponctuation; nous allons en apprendre davandage à ce sujet à la leçon 7A.

▪   35 est une valeur entière (integer en anglais), qui a l’abréviation int en Python. Un nombre entier est simplement un nombre habituel, sans partie décimale; par exemple, 42, -12 et 0 sont des valeurs entières.

Utiliser un objet du mauvais type est une cause très courante d’erreurs dans les programmes. C’est comme essayer de boire un sandwich: c’est impossible parce que l’on ne peut boire que ce qui est de type liquide, et un sandwich est de type solide.

Vous pouvez déterminer le type d’un objet en appelant la fonction type.

Exemple
Quelques exemples de types.

(La signification de class est similaire au type.) L’exemple ci-dessus démontre que les chiffres, eux aussi, sont divisés en deux différents types : int, que nous avons mentionné ci-dessus ; et float, qui est utilisé pour garder des chiffres avec une partie décimale. Vous devriez penser à des floats, comme étant  des valeurs inexactes ou des valeurs approximatives (nous allons expliquer cela plus en détails dans la leçon 7B). Habituellement, vous pouvez mélanger des valeurs float avec des valeurs int, et avoir un autre float comme résultat.

Exemple
Le mélange d’un float et d’un int.

En fait, ce que Python fait réellement quand vous mélangez un float avec un int, est qu’il convertit le int en un float et travaille avec deux floats.

Exercice à choix multiple : Flottant
Si nous changeons la valeur 1.2 à 1.5 dans le programme ci-dessus, quel est la sortie?
Correct ! Nous devons expliquer deux faits ici, pourquoi z est imprimé comme 3.0.
  • L'expression x * y mêle un int et un float, ce que Python considère comme deux floats, et le résultat z est donc un float.
  • La valeur mathématique de z est 1.5 fois 2, qui font 3, mais stocké sous forme décimale inexacte, de type float. Quand Python imprime un float, si sa valeur est un nombre entier, il est imprimé avec .0 précisant qu'il s'agit d'une valeur inexacte.
En outre, notez que la valeur et le type de y n'ont jamais changé.

Il est souvent nécessaire de changer d'un type d’information à un autre. De la même façon que l’on peut convertir un sandwich de l’état solide à l’état liquide, avec l’utilisation d’un mixeur, on peut changer l’information d'un type à un autre type en utilisant une fonction de transtypage (typecast function en anglais). On peut écrire le type désiré de la même façon que l’on appelle une fonction, par exemple

x = float("3.4")
print(x-1)
change la valeur chaîne "3.4" à une valeur float 3.4 et imprime la valeur 2.4. Sans la fonction de transtypage, le programme ne fonctionnerait pas puisque il ne peut pas soustraire un chiffre d’une chaîne.

Parfois, Python nous laisse mélanger des chaînes et des chiffres. La déclaration print("hots" * 2) imprime hotshots. Une règle de Python stipule que multiplier une chaîne s par un nombre entier n équivaut à faire n copies de la chaîne à la suite. Nous allons voir que "l’addition de deux chaînes" est aussi bien définie en Python.


Divers transtypages réagissent de façons différentes:

  • la conversion d’un float à un int faire perdre l’information après la virgule décimale, ex. int(1.234) donne 1 et int(-34.7) donne -34
  • la conversion d’un str à un int cause une erreur si la chaîne n’est pas formaté exactement comme un chiffre entier ex. int("1.234") cause une erreur.
  • la conversion d’un str à un float cause une erreur si la chaîne n’est pas un chiffre, ex. float("sandwich") cause une erreur.

Une utilité fréquente des transtypages, que nous allons voir, est de convertir une donnée obtenue d’un utilisateur, qui est toujours sous le format de chaîne, à une forme numérique. Voici une illustration rapide :

Exemple
Exemple de transtypage.

Voici un autre exercice pour compléter notre leçon.

Parce qu’il y a maintenant pluieurs commandes d’éditeur, certaines commandes ont été déplacées dans le menu intitulée Plus d’actions.

Exercice de code : Délicieux transtypage
Écrivez un programme qui va vous aider à nourrir vos amis à une fête en faisant des maths au sujet de pizzas carrés. Supposons que le correcteur définisse pour vous une chaîne de caractères inputStr qui est une chaîne de caractères décimale donnant la longueur L d’un côté de la pizza, en cm. L’aire de la pizza devrait être calculée avec la formule A=L*L. En faisant l'hypothèse que chaque personne a besoin de manger 100 cm2 de pizza, calculez le nombre de personnes qui peuvent être nourries, arrondi au nombre entier le plus proche. Indice


Exemple: si inputStr est "17.5", l’aire va être de 306.25 cm2, alors 3 sera le résultat correct.

Une fois que vous avez complété cette activité, vous pouvez avancer à la prochaîne.