CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

AIDE EN PYTHON SVP URGENT

Aharamis
Aharamis
Niveau 4
13 janvier 2019 à 17:55:16

Bonjour, j'aimerais savoir comment je peut faire pour que mon programme addition les valeurs d'une boucle ?
Je m'explique, par exemple si ma boucle me génère:
1
2
3
4
Au lieux de faire un: print( 1+2+3+4)
j'aimerais bien avoir une variable qui prend additionne le tous et qui a la fin de la boucle m'affiche :10 ..

TheRealMarco
TheRealMarco
Niveau 13
13 janvier 2019 à 18:03:27
total = 0

for chiffre in valeurs:
   total += chiffre

print(total)

Un truc du genre, non ?

Aharamis
Aharamis
Niveau 4
13 janvier 2019 à 19:42:19

J'y ai pensé aussi mdr, moi j'ai trouvé ca du coup
nb_etatge = int(input())
pomme_max = 0
i = 0
print("Il y a" , nb_etatge," etages dans la pyramide \n")
while(i != nb_etatge+1) :
print("etage :", i," contient : ", i*i ," pommes")
if((i*i) % 3 == 0):
pomme_max = pomme_max + i * i
print("hercule peut recuperer les pommes de l'etage", i,"\n")
else:
print("hercule ne peut pas recuperer les pommes de l'etage", i,"\n")
i += 1

print("pomme max pouvant etre recuperer par hercule :", pomme_max)

gorz94
gorz94
Niveau 6
14 janvier 2019 à 22:07:52

Évite d'utiliser un while quand tu connais le nombre d'itération.
La proposition de TheRealMarco est la meilleure

total = 0
for i in range(nb_etage):
    total += i
Aharamis
Aharamis
Niveau 4
15 janvier 2019 à 12:43:30

Salut, moi je suis en première année en informatique, et le prof nous a donné des exos en python pour nous entrainer, et je bloque sur celui ci
Considérons la fonction f(n) définit de la manière suivante :
f(0) = 2
f(1) = 3
f(n) = 2f(n-1) + f(n-2) si n est pair et n ≥ 2
= f(n-1) - f(n-2) si n est impair et n ≥ 2
voici mon code:
def f(n): #Il fallait definir une fonction pour la quelle on ferait varier le paramettre "n", a partir de la le reste etait simple avec la fonction "return"
if(n == 0):
return 2
if(n == 1):
return 3
if(n%2 == 0):
return 2 * f(n-1) + f(n-2)
else:
return f(n-1) - f(n-2)
n=0
while n < 90:
print("on a fn = ",n,f(n))
n+=1
Il marche très bien vu que j'ai calculer manuellement f(n) du rang n=2 au rand n = 10 ou 11 et je trouve le même résultat qu'avec mon code, donc j'en enduis que le code marche.
Mais du coup l' énoncer nous demande de calculer n au rang n = 90, et la bim impossible de monter aussi haut, j'ai laisser tourné l'ago toute une journée et le plus haut que j'ai atteint était le rang 51 ...
Du coup je me demande ... est ce que c'est mon pc qui n'est pas assé puissant pour faire les calcules ou c'est l'algo qui n'est optimisé pour aller plus vite ? SVP help ...

Pseudo supprimé
Pseudo supprimé 15 janvier 2019 à 13:29:13

Même pas besoin de faire une boucle, vous pouvez juste utiliser sum(range()) ou reduce pour des trucs plus compliqués (le produit par ex).

@Aharamis

C'est normal, ton approche récursive croit beaucoup trop vite. Pour calculer f(90) il faut calculer f(89) et f(88), f(89) va devoir calculer 88 et 87 et ainsi de suite. Sauf qu'en plus tu les calcule tous encore plus de fois à cause de la boucle.

https://cdn-images-1.medium.com/max/925/1*svQ784qk1hvBE3iz7VGGgQ.jpeg
Exemple avec fibonacci qui est l'exemple typique de ce problème.

gorz94
gorz94
Niveau 6
15 janvier 2019 à 21:35:28

@Aharamis

Le problème ici est que, comme SMTIII_NOCTURNE l'a dit, tu calcules plusieurs fois les mêmes termes. Fais une truc comme ça plutôt

valeurs = [0]*100;

def f(n):
    if valeurs[n] != 0:
        return valeurs[n];
    if n == 0:
        value = 2;
    elif n == 1:
        value = 3;
    elif n%2 == 0:
        value = 2*f(n-1) + f(n-2);
    else:
        value = f(n-1) - f(n-2);
    valeurs[n] = value;
    return value;

print(f(90));

ton f(90) je le trouve en 2sc: 523894914996757936(après, est-ce que c'est le bon ... :hap:)

En gros, pour pas recalculer plein de fois la même valeur, dès que tu la calcule, tu la stockes dans un tableau. Donc valeurs[i], si non nul, correspond à f(i). Comme ça tu calcules une seule fois chaque terme.

Message édité le 15 janvier 2019 à 21:36:57 par gorz94
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment