Je ne comprend pas cette formule

Fermé
deel - Modifié le 2 mai 2019 à 17:02
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 - 3 mai 2019 à 18:22
Bonjour,

Cela fait quelques semaines que je suis sur python en suivant le livre de gerard swinnen,
j'ai du mal avec certaine formule, mais la j'ai vraiment un blocage avec la correction...
Je pense que mon soucis réel et les math et non le logiciel, j'ai limpression que mon cerveau ne peut pas comprendre cette simple chose.

print("entrer l'inferieur :",end=" ")
a=eval(input())
print("superieur :",end=" ")
b=eval(input())
s=0

n=a
while n<=b:
    if n%3==0 and n%5==0:
        s=s+n
    n=n+1
print("La somme recherchée vaut",s)


Et quand je voie que je comprend pas ca j'ai juste envie de tout arrêter car je me sent vraiment stupide ^^"


Configuration: Windows / Chrome 73.0.3683.103
A voir également:

1 réponse

jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié le 2 mai 2019 à 18:55
Bonjour,

Tu aurais du nous donner l'énoncé de la question ;-)

Je me lance : la somme des entiers, compris entre 2 valeurs, divisibles à la fois par 3 et par 5.

Un peu difficile de t'aider. Pour résumer on demande de saisir 2 valeurs a et b et on va tester toutes les valeurs n entre ces 2 nombres (le while) pour voir s'ils sont divisibles à la fois par 3 et par 5 (le if), si oui on additionne la valeur testée n dans l'accumulateur s, quand la boucle est terminée on affiche s

1
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
2 mai 2019 à 17:26
en programmation, plus que les maths, c'est la logique, le découpage en taches de base des instructions à faire effectuer à la machine, et leur ordonnancement qui comptent
0
effectivement désolée

Écrire un programme qui, étant données deux bornes entières a et b, additionne les nombres multiples de 3 et de 5 compris entre ces bornes. Prendre par exemple a = 0, b = 32 ; le résultat devrait être alors 0 + 15 + 30 = 45.
Modifier légèrement ce programme pour qu'il additionne les nombres multiples de 3 ou de 5 compris entre les bornes a et b. Avec les bornes 0 et 32, le résultat devrait donc être : 0 + 3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 + 20 + 21 + 24 + 25 + 27 + 30 = 225.

Ce que je comprend pas déjà c'est a quoi sert réellement la fonction "eval" ici ?
Et on lui dit bien d’exécuter cela si" n" et divisible par 3 et aussi par 5 or ce n'est pas le cas.
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235 > deel
2 mai 2019 à 18:53
eval() sert à faire de a un nombre entier, sans eval() a serait une chaine de caractères, accessoirement si un utilisateur tordu répond supérieur=16+16 b vaudra l'entier 32, sans eval() b vaudrait la chaine "16+16"

c'est nécessaire de le savoir, mais pas principal pour l’exercice proprement dit.

Je ne comprend pas le sens de ton questionnement dans ta dernière phrase. C'est le programme qui justement détermine, pour chaque nombre, entre les bornes si il répond à la question.

Que proposes tu pour la 2ème version du programme "multiple de 3 ou de 5" ?
0
A d'accord merci, Pour la deuxième partit il suffit de remplacer le if n%3==0 and n%5==0: par if n%3==0 or n%5==0:

Ce que je comprend pas c'est en fin de compte quelle et la procédure du calcul je n'arrive pas a comprendre comment l'on arrive a ce résultat, la procédure je ne la comprend pas. Du coup la en ayant regarder la correction je ne comprend toujours pas
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235 > deel
Modifié le 2 mai 2019 à 19:28
on fait une boucle on traite 0, 1, 2 , 3 ... 32 si le nombre traité est divisible par 3 et 5 on additionne ce nombre dans l'accumulateur s

pour mieux visualiser où passe le programme tu devrais executer

print("entrer l'inferieur :",end=" ")
a=eval(input())
print("superieur :",end=" ")
b=eval(input())
s=0

n=a
while n<=b:
    print("Traitement de ", n)
    if n%3==0 and n%5==0:
        print("valeur OK ", n)
        s=s+n
        print("Nouveau cumul ", s)
    n=n+1
print("La somme recherchee vaut",s)
0