0
votes

additionner la plage de deux entrées [python 3]

Ce script acceptera deux entrées de nombres entiers. la première entrée sera toujours (-) plus que la seconde. Le script affichera la somme de toutes les autres entrées de nombres entiers.

script n'imprimera aucun autre texte sur la console autre que le résultat de l'opération.

voici le code que j'ai écrit - jusqu'à présent, je suis capable d'accepter l'entrée mais il produit une boucle infinie et ne fait pas la somme.

Merci

if __name__ == "__main__":

# user inputs digits
start = int(input())
stop = int(input())

# sum the range of above
while start < stop:
    print(sum for i in range(start, stop, 2))


1 commentaires

Vouliez-vous utiliser sum() intégré?


3 Réponses :


1
votes

Dans votre problème, le start sera toujours inférieur à l' stop , de sorte while boucle while ne se termine jamais. Au lieu de cela, vous pouvez conserver une variable qui commence au start et augmente de 2 jusqu'à atteindre stop .

total = sum(range(start, stop, 2))

Par souci de concision, cela peut simplement être fait avec

# user inputs digits
start = int(input())
stop = int(input())

i = start
total = 0
while i < stop:
    total += i
    i += 2


1 commentaires

Merci! cela fait, j'ai oublié de mentionner que la plage devrait inclure le dernier int mais facilement corrigée. grande aide!



1
votes

Si vous voulez additionner la plage, vous n'avez même pas besoin d'une boucle, car la range agit essentiellement comme votre boucle:

# user inputs digits
start = int(input())
stop = int(input())

# sum the range of above
print(sum(range(start, stop, 2)))


0 commentaires

0
votes

Votre start est toujours plus petit que stop donc bien sûr la boucle s'exécute toujours. Si c'était l'inverse, cela ne fonctionnerait même pas une seule fois.

Vous avez une boucle for à l'intérieur d'un while et cela peut également être évité:

# user inputs digits
start = int(input())
stop = int(input())

# sum the range of above
result = 0
for i in range(start, stop, 2):
    result += i

Ou, encore mieux,

result = sum(range(start, stop, 2))


3 commentaires

cela semble prendre 5 et augmenter les étapes entre le nombre au cours de 5 itérations à 9 lorsque l'utilisateur entre 5 et 9. le code doit produire le nombre 7 (deux étapes vers le haut) avec un résultat de 21.


Si vous entrez 5 et 9, le code additionnera 5 + 7 + 9. N'est-ce pas ce que tu veux?


Mon mauvais, la range n'inclut pas la valeur d' stop , donc elle totalisera 5 + 7 seulement. Si vous voulez aussi 9, remplacez simplement stop par stop + increment , l' increment étant 2 dans ce cas