Python:Comment faire la somme des valeurs d'une boucle while stocker dans une variable?
Je suis juste un débutant :P.
Je suis en train de faire un tutoriel sur le sujet tout en boucles sur Codeacademy "Cliquez sur ici!" ,
mais je l'ai collée sur cette partie: Écrire une boucle while qui stocke dans "theSum
" la somme des 10 premiers entiers positifs (y compris 10).C'est ce qu'il vous donne pour travailler avec:
theSum = 0
num = 1
while num <= 10:
print num
num = num + 1
Il imprime les numéros de 1 à 10 séparées sur les lignes dans la console. Quelqu'un peut-il m'expliquer comment je peux l'obtenir pour stocker la somme des valeurs dans la variable "mySum
"? Tout ce que j'ai essayé jusqu'à présent n'a pas fonctionné pour moi. 🙁
EDIT:
Bon alors j'ai juste essayé ceci:
theSum = 0
num = 1
while num <= 10:
num += 1
mySum = num
mySum = mySum + num
print mySum
Cela me donne 22, pourquoi est-ce? Suis-je de toute façon? (Merci pour toutes les réponses, mais je vais essayer de nouveau demain.)
EDIT: Bon, je l'ai eu! Je vous remercie pour l'aide. 🙂
mySum = 0
num = 1
while num <= 10:
mySum += num
num += 1
print mySum
C'est comme aller à une décoration à la maison de site et en disant "je suis en train de peindre ma maison, mais tout ce que j'ai essayé n'a pas fonctionné" Vous avez besoin d'apprendre à mieux poser des questions si vous souhaitez obtenir de l'aide utile. Dites-nous ce qui n'a pas fonctionné?
OriginalL'auteur Stephen | 2012-08-22
Vous devez vous connecter pour publier un commentaire.
Le code que vous avez déjà montre presque tout le nécessaire.
Le problème reste que si vous êtes correctement génère les valeurs à ajouter (
num
) à l'intérieur de votrewhile
en boucle, vous êtes pas accumulation de ces valeurs dans votre variabletheSum
.Je ne vais pas vous donner le code manquant sur le but, de sorte que vous pouvez apprendre quelque chose de votre question ... mais vous devez ajouter la valeur de
num
à votre variabletheSum
à l'intérieur de la boucle. Le code pour faire ça (c'est vraiment un déclaration, c'est à dire, une seule ligne de code) sera un peu similaire à la façon dont vous traitez avec/mise à jour de la valeur denum
à l'intérieur de votre boucle.T-il m'aider?
Je sais .. comme je l'ai dit, il est assez proche et a fait de la majeure partie du travail. Pensez-vous qu'il serait utile de préciser explicitement qu'il manque juste une déclaration?
Je pense que vous vous méprenez. La question sur codeacademy donne déjà ces 5 lignes dans le cadre de la question
Oh oui, j' totalement mal compris ce que vous disiez. Je vois maintenant .. merci pour la clarification.
De se! Merci à vous et à gnibbler :D. je vais modifier ma question afin de montrer ce que j'ai fait.
OriginalL'auteur Levon
Permet de prendre un fonctionnement à sec par le code que vous avez posté. J'ai numéroté les lignes afin que je puisse les consulter.
Voici une marche à sec
ressemble à quelque chose ne va pas droit. Pourquoi faites-vous ce
mySum = num
l'intérieur de la boucle? Qu'attendez-vous d'elle?+1 pour entrer dans le code et obtenir de l'OP, pour essayer de répondre à la bonne question à la fin.
OriginalL'auteur John La Rooy
Pour les boucles! Meh, je dis!
n=10; sum_ = n*(n+1)//2
n=10; reduce(lambda x,y: x+y, range(n+1))
pourrait dire aussi 🙂ou tout simplement
theSum = map( lambda x : x + theSum , (num,) )[0]
si vous voulez garder la boucle for et de donner un ringard soupçon.OriginalL'auteur Aesthete
J'ai aussi grandement lutté avec cette.
C'était ma solution, mais j'ai eu de l'aide de interactivepython.org (http://interactivepython.org/runestone/static/pip2/IndefiniteIteration/ThewhileStatement.html)
Je ne pouvais pas comprendre comment le faire sans le "retour" de la fonction. Consultez la solution et l'explication ci-dessous:
Supposons que vous définissez x = 3
La façon dont je croire python interprète se présente comme suit:
ensemble my_sum = 0 et count = 1
1. La première itération de la boucle while: 1 <= 3 : Vrai
donc my_sum = 0+1
en plus de compter augmente de 1 et maintenant count = 2
Le "Retour my_sum' est essentiel car il permet my_sum de cercle vers le haut de la boucle, de 1 au lieu de 0.
Deuxième itération de la boucle while: 2 <= 3 : Vrai
donc my_sum = 1+2 ; le comte de nouveau augmente de 1 alors maintenant, count = 3
Retour my_sum nouveau renvoie la nouvelle valeur de 3 pour my_sum vers le haut de la boucle
Troisième itération de la boucle while: 3 <= 3 : Vrai
donc my_sum = 3+3 ; compteur augmente de 1 alors maintenant, count = 4
Retour my_sum nouveau renvoie la nouvelle valeur de 6 pour my_sum vers le haut de la boucle
Quatrième itération de la boucle while n'arrive jamais, depuis le 4 <=3 : Faux
Maintenant, le programme imprime my_sum qui maintenant est égal à 6.
Cependant, je pense qu'il y aurait un moyen plus facile de le faire. Est-il un moyen pour python pour générer une liste et ensuite additionner les valeurs de la liste? Par exemple, pourrais-je écrire un programme appelé sumlist(n) où python répertorié les entiers de 0 à n, puis ajouté?
result = problem1_3(14)
. Sans le retour, le résultat en aurait Aucun. Vous pourriez être intéressé par stackoverflow.com/q/7129285/5827958OriginalL'auteur Conor McGrath