• [^] # Re: mode avocat du diable

    Posté par (Mastodon) . En réponse à la dépêche Python 3.2. Évalué à 1.

    En C :

    float r=1/2;
    r vaut 0.5 ...

    Mais c'est vrai que le C est un langage mineur... Ah, tiens, non en fait !

    Mais oui, la division d'un entier par un entier est une division entière, c'est logique, même en C :

    int r=1/2;
    Et r vaut bien 0 !

    Mais en python, ou d'autres langages, 1, 2 doivent-ils forcément être entiers ? Ne devraient-ils pas l'être seulement quand on le veut ? C'est le problème du non-typage des données, 1 comme ça, ça peut être pas mal de choses, ça peut être un entier naturel, un relatif, un nombre rationnel, un nombre réel, un nombre complexe même.

    Pourquoi serait-il plus logique que ça soit un relatif plutôt qu'un réel ? En python 2, pour obtenir 0.5, tu dois écrire :

    1./2
    Mais avec des variables manipulées à droite à gauche, sans que tu ne sois sûr du typage, comment tu forces une division réelle si x et y sont finalement des entiers, mais que ce que tu cherches c'est vraiment la division réelle ? Tu te fais chier. Alors qu'en python 3, si tu as besoin de la division entière, tu fais x//y, ça a du sens, dans un algorithme quelconque, chercher la division entière est quelque chose qui a du sens, un sens fort : ça change le résultat de l'opération. Ca me paraît très logique qu'on doive le spécifier de façon claire, au moins parce que le type des variable n'est pas lui spécifié, et que c'est une base du langage (à la différence du C, où cette question toute entière ne se pose en fait pas du tout).

    Yth.