Python : int et variable locale

Résolu/Fermé
Drajopik - Modifié le 9 déc. 2022 à 16:41
mamiemando Messages postés 32945 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 février 2024 - 9 déc. 2022 à 16:45

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 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
Modifié le 7 déc. 2022 à 15:17

bonjour,

un exemple plus simple:

print(3*"bonjour")
print(3*"4")
print(3*4)
0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
Modifié le 7 déc. 2022 à 15:21

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

écris plutôt:

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

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 32945 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 février 2024 7 722
9 déc. 2022 à 16:45

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