Python : int et variable locale

Résolu

Bonjour

Je débute sur python, Je crée une fonction tout simple, mais je ne sais pas pourquoi mon résultat n'est pas le même avec int(x*i) et int(x)*i

Ce cas là :

def maFonction(entierSaisi):
    i = 1
    res = 0
    while i <= int(entierSaisi): 
        res += int(entierSaisi*i)
        i += 1
    return res

s = input('Saisir un entier :')
print(maFonction(s))

Et celui là :

def maFonction(entierSaisi):
    i = 1
    res = 0
    while i<= int(entierSaisi): 
        res += int(entierSaisi * i)  # Je sors mon *i ici et le résultat me donne celui attendu (avec 5) 75
        i += 1
    return res

s = input('Saisir un entier :')
print(maFonction(s))

En vous remerciant
Windows / Chrome 106.0.0.0

2 réponses

  1. Contributeur

    bonjour,

    un exemple plus simple:

    print(3*"bonjour")
    print(3*"4")
    print(3*4)
    0
    1. Contributeur

      c'est gentil d'écrire "entierSaisi", et c'est faux.

      écris plutôt:

      def maFonction(texteSaisi):
          entierSaisi=int(texteSaisi)
      0
  2. Merci beaucoup pour ta réponse, en faite le entierSaisi m'a fait oublié que input me donne une variable str et pas int.

    0
    1. Modérateur

      Tout à fait, et pour préciser ce qui a déjà été dit par yg_be, multiplier une chaîne de caractère par un entier revient à répéter autant de fois que cet entier. Du coup si tu as saisi "12" et que tu le multiplies par 3, tu obtiens "121212". En convertissant "12" dans son entier correspondant 12, la multiplication par 3 donne bien 36.

      print("12" * 3)       # 121212
      print(12 * 3)         # 36
      print(int("12") * 3)  # 36

      Bonne continuation

      0