2017-09-27 3 views
1

La première ligne devrait indiquer le nombre de cas, après que les lignes suivantes seraient les cas et parmi ces cas, vous devez être en mesure d'imprimer le nombre maximum, le nombre minimum et la plage. J'ai ce code jusqu'ici mais il ne prend en compte que les deux premiers cas et ignore complètement la première ligne indiquant le nombre de cas. Quelqu'un peut-il me dire ce qui ne va pas? Merci!Comment imprimer les nombres maximum et minimum à partir de plusieurs lignes d'entrée utilisateur en python?

cases = int(input()) 
index = 1 
inp = int(input()) 
minimum = inp 
maximum = inp 
while index<=cases: 
    inp = int(input()) 
    if input>maximum: 
    maximum = inp 
    elif input<minimum: 
    minimum = inp 
    index = index + 1 
    print('Maximum: '+str(maximum)) 
    print('Minimum: '+str(minimum)) 
    print('Range: '+str(maximum-minimum)) 

Répondre

0

C'est un exemple typique de par une erreur. Une solution générique pour ceux-ci est de simplement essayer votre algorithme avec quelques petits nombres comme 1 ou 3 et vérifier si elles correspondent à vos attentes.

Disons que la 1ère entrée est 1, donc cases obtient initialisés à 1. L'état whileindex<=cases est évaluée à 1<=1, il entre dans la boucle une fois de plus, bien que vous avez déjà enregistré un cas sur la ligne 3.

Il suffit de remplacer la condition de boucle à index<cases et tout ira bien. En outre, vous devez désactiver les appels print pour les écrire une fois que toutes les entrées ont été lues. En outre, un bon conseil est d'utiliser un débogueur pour voir si le flux réel du programme et les valeurs dans les variables correspondent à vos attentes si vous faites face à des problèmes plus difficiles que vous ne pouvez pas résoudre simplement en regardant le code. PyCharm est un IDE assez solide pour le débogage du code python.

0

Cela vous aidera à résoudre votre question:

cases = int(input()) 
arr = [int(input()) for i in range(cases)] 
min_e, max_e = min(arr), max(arr) 
print("Min:{} Max:{} Range:{}".format(min_e, max_e, max_e-min_e)) 
+0

Bien que python ne permet une solution laconique comme ça, il est plus facile pour les développeurs débutants de lire et d'écrire un plus bavard, mais le code de bas niveau comme OP a fait. Ou suis-je sur le mauvais site pour penser à la didactique? ;) – wigy

+1

Oui, vous pouvez écrire une version plus longue. Mais l'utilisation de la fonction standard permet de gagner du temps si vous n'étudiez pas un algorithme :) – AndMar