Test de multiple

Résolu
PatrickBalkany -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je débute dans le python et je veux tester les multiples. J'ai trouvé la manière de le faire (avec
%
), mais je me suis demandé, si c'était possible avec ça :

variable = x
variable1 = variable/10
if type(variable1) == int #Si c'est un multiple de 10


ou au contraire :

if type(variable1) == float #Si ce n'est pas un multiple de 10


J'ai essayé et ça ne fonctionne pas, je ne sais pas si c'est une erreur qui vient de moi ou si ce n'est juste pas possible de cette manière.

Voilà c'est juste une petite curiosité, merci d'avance

2 réponses

  1. sorlo
     
    Bonsoir, si le modulo existe c'est qu'il est super utile et sert justement à éviter de partir dans des complications inutiles de calculs.

    Tu peux toujours t'amuser à faire

    for x in range(10, 21):
        r = x / 10
        ir = int(r)
        if r == ir:
            print('%i est un multiple de 10' % x)


    Puisqu'en python
    1.0 == 1
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Pour ce genre de question, le plus simple est de tester dans ton interpréteur python (ou vérifier avec des
    print
    dans un programme).

    En python2

    Ça ne marchera pas, car l'opérateur
    /
    retourne un objet du type de l'opérande de gauche (comme en C). Ainsi, si ton numérateur est un
    int
    , tu obtiens un
    int
    dans tous les cas.

    (mando@aldur) (~) $ python
    Python 2.7.16+ (default, Jul 8 2019, 09:45:29)
    [GCC 8.3.0] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> type(13/10)
    <type 'int'>
    >>> type(100/10)
    <type 'int'>


    En python3

    Ça ne marchera pas, car l'opérateur
    /
    retourne toujours un
    float
    .

    (mando@aldur) (~) $ python3
    Python 3.7.4 (default, Jul 11 2019, 10:43:21)
    [GCC 8.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> type(13/10)
    <class 'float'>
    >>> type(100/10)
    <class 'float'>
    >>>


    Conclusion

    Comme tu l'as dit, il faut bien utiliser l'opérateur
    %
    pour répondre à cette question.

    >>> (13 % 10) == 0
    False
    >>> (100 % 10) == 0
    True


    Bonne chance
    0