2017-09-04 4 views
0

Je suis très novice en programmation, j'ai commencé à travailler sur un cours Python. J'ai regardé à travers le matériel de cours et en ligne pour voir s'il y a quelque chose qui me manque mais que je ne peux pas vraiment trouver quelque chose.Comment créer un chatbot qui saisit et résume + calcule la moyenne avant de terminer et d'imprimer les résultats?

Ma tâche consiste à créer un chatbot qui saisit et résume l'entrée, mais calcule également la moyenne. Il devrait prendre toute la saisie jusqu'à ce que l'utilisateur écrit "Terminé", puis terminer et imprimer les résultats.

Lorsque je tente de lancer ceci:

total = 0 
amount = 0 
average = 0 
inp = input("Enter your number and press enter for each number. When you are finished write, Done:") 

while inp: 
    inp = input("Enter your numbers and press enter for each number. When you are finished write, Done:") 
    amount += 1 
    numbers = inp 
    total + int(numbers) 
    average = total/amount 
    if inp == "Done": 
     print("the sum is {0} and the average is {1}.". format(total, average)) 

Je reçois cette erreur:

Traceback (most recent call last): 
    File "ex.py", line 46, in <module> 
    total + int(numbers) 
ValueError: invalid literal for int() with base 10: 'Done' 

De la recherche autour des forums, j'ai compris que je dois convertir str int ou quelque chose ces lignes? S'il y a d'autres choses à corriger, s'il vous plaît faites le moi savoir!

Répondre

0

Il semble que le problème est que lorsque l'utilisateur tape "Terminé" alors la ligne int(numbers) tente de convertir "Terminé" en un entier qui ne fonctionnera tout simplement pas. Une solution pour cela est de déplacer votre condition

if inp == "Done": print("the sum is {0} and the average is {1}.". format(total, average))

plus haut, juste en dessous de l'affectation « inp = ». Cela évitera ValueError. Ajoutez également une instruction break pour qu'elle sorte de cette boucle while dès que quelqu'un tape "Done"

Enfin, je pense qu'il vous manque un signe = lors de l'ajout à la variable totale.

Je pense que c'est ce que vous voulez:

while inp: 
    inp = input("Enter your numbers and press enter for each number. When you are finished write, Done:") 
    if inp == "Done": 
     print("the sum is {0} and the average is {1}.". format(total, average)) 
     break 
    amount += 1 
    numbers = inp 
    total += int(numbers) 
    average = total/amount