Test de multiple

Résolu
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. 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
    1. Modérateur
      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