0
votes

COURSERA - Python pour tout le monde - EX 5.2

pour le problème suivant:
Écrivez un programme qui invite à plusieurs reprises à un utilisateur pour des numéros entier jusqu'à ce que l'utilisateur entre effectué code>.
Une fois «fait» est entré, imprimez le plus grand et le plus petit des chiffres. de
Si l'utilisateur entre autre chose d'autre qu'un numéro valide l'attrape avec un essai / sauf et définissez un message approprié et ignorez le nombre. de
Cas d'entrée:
Entrez 7, 2, Bob, 10 et 4 et faites correspondre la sortie ci-dessous.

Mon programme ne montre pas correctement les ANS. Quel est le problème ici?
p>

while True:
inp = input("Enter number: ")

if inp == "done":
    print("done")
    break
try:
    inp_data = int(inp)
except:
    print("Invalid input")
if smallest is None:
    smallest = inp_data
elif inp_data < smallest:
    smallest = inp_data
elif inp_data > largest:
    largest = inp_data
    
print("largest", largest)
print("smallest", smallest)


4 commentaires

Suggestion: Ne testez pas uniquement avec la séquence donnée des entrées. Essayez une variété de cas de test. Par exemple, essayez d'entrer uniquement "Terminé", essayez d'entrer uniquement un numéro, essayez d'entrer uniquement une entrée non valide, essayez d'entrer des numéros qui ne font qu'augmenter ou diminuer. Lorsqu'un test échoue, corrigez le script pour ce cas, puis testez d'autres.


Votre indentation est éteinte, tout dans le tandis que la boucle doit être indentée à partir du pendant la réalité


Vous cherche que maximum est 10, minimum est 2 est correct, pour 7, 2, Bob, 10, 4. Non?


La section de sortie donnée n'est que la sortie attendue. Mais mon entrée donnée ne s'affiche pas comme ça.


3 Réponses :


2
votes

Il vous manque quelques instructions lors de l'impression de la sortie.
Le code suivant a fonctionné pour moi.

largest = None
smallest = None

while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        #print(num)
        num = int(num)
        if largest is None or largest < num:
            largest = num
        elif smallest is None or smallest > num :
            smallest = num
    except ValueError:
        print("Invalid input")
        continue

print("Maximum is", largest)
    
print("Minimum is", smallest)


0 commentaires

0
votes

Essayez ce code et merci plus tard

largest = None
smallest = None
while True:
    val = input("Enter a number: ")
    if val == "done":
        break
    try:
        val = int(val)
        if largest is None or val > largest:
            largest = val
        elif smallest is None or smallest > val:
            smallest = val
    except:
        print("Invalid input")
        continue
print("Maximum is", largest)
print("Minimum is", smallest)


0 commentaires

0
votes

Si vous incluez des relevés d'ELIF, ils ne seront pas cochés si la condition de l'instruction IF est vraie, donc si j'avais "elif le plus petit ...", il ne serait jamais coché de donner "Minimus n'en étant pas" en conséquence .

largest = None
smallest = None

while True:
    enter_num = input('Enter a number ')
    if enter_num == 'done':
        break
    try:
        num = int(enter_num)
        if largest is None or largest < num:
            largest = num
        if smallest is None or smallest > num:
             smallest = num
    except:
        print('Invalid input')
        continue
 
print('Maximum is', largest)
print('Minimum is', smallest)


0 commentaires