Python : int et variable locale

Résolu
Drajopik -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -

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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

un exemple plus simple:

print(3*"bonjour")
print(3*"4")
print(3*4)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

écris plutôt:

def maFonction(texteSaisi):
    entierSaisi=int(texteSaisi)
0
Drajopik
 

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
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 

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