Bonjour, j'essaye depuis maintenant plus d´une heure de répondre à la question ci-dessous avec le programme suivant ( je suis obligé d'utiliser une loop et une condition ) :

n = 0
sum = 0
for x in range(100):
    if n % 2 == 0:
        n = n ** 2
        sum = sum + n
        n = n ** 0.5
        n = n + 1
    else:
        n = n ** 3
        sum = sum + n
        n = n ** (1 / 3)
        n = n + 1
print(sum)

Voici ce qui m'est demandé :

We want to calculate the sum: 0^2+1^3+2^2+3^3+4^2+...+99^3+100^2; that is, the even numbers squared and the odd numbers cubed.
Use a for loop and conditional statement to calculate the sum and print it.

Le résultat attendu est : 12669200

Seulement, voici la valeur que j'obtiens : 24502447.99999938

Quelqu'un saurait-il me donner un petit coup de pouce ? Merci d'avance !

3 réponses


Je penses fortement que tu te complique fortement la tâche

  • A quoi te sert ta variable n ?
  • Pourquoi t'amuser à mettre ta puissance sur cette variable n pour essayer tant bien que mal à la mettre à la racine carré ou cube ? Si tu veux garder ta variable n,
    soit utilise une autre variable pour le résultat (pow = n ** 2), ça t'évitera des problèmes de reste de divisions non voulus (d'où ton résultat pas rond)
    soit met le résultat directement dans ton addition de sum. (sum = sum + (n ** 2))
  • Pourquoi ne pas utiliser l'itération de ta boucle pour faire ta puissance directement ?
  • Fait attention, ton range va s'arrêter à la 100ème itération, et donc à 99 car il commence à 0, pense à passer à un range(101)

Si tu continues à bloquer, je te donnerai la réponse réellement attendue par l'exercice

result = 0

l'itérateur range s'arrête à la dernière valeure exclue

for x in range(101): # range(101) et pas 100, va jusqu'à 100 inclus
if x % 2 == 0:
result = result + x2 # ici il faut utiliser x et pas n (supprimé)
else:
result = result + x
3
print(result)

comment on publie du code proprement ici ? Mes indentations et les puissances sont parties... il saura les remettre.