2016-10-19 4 views
-1

, когда я ввожу последовательность чисел, таких как [2, 6, 9, 4, 8, 7], чтобы найти самое большое и наименьшее число, которое показывает, что (8, 7) являются самыми большими и наименьшими номера, что является ошибкой в ​​моем коде?Python. найдя наибольшее число и наименьшее число

def minmax(): 

    x = int(input("Enter the number of integers you want: ")) 

    mylist = [int(z) for z in input("Enter the numbers separated by a space and then click Enter: ").split()] 


    l = mylist[0] 

    for i in range(1, x): 
     if mylist[i] > mylist[i - 1]: 
      l = mylist[i] 
     else: 
      a = i 
      while a < x - 1: 
       if mylist[a + 1] > l: 
        l = mylist[a + 1] 
       a += 1 

    s = mylist[0] 

    for i in range(1, x): 
     if mylist[i] < mylist[i - 1]: 
      s = mylist[i] 
     else: 
      a = i 
      while a < x - 1: 
       if mylist[a + 1] < s: 
        s = mylist[a + 1] 
       a += 1 

    print((l, s), "are the largest and smallest numbers") 

minmax() 
+0

'if mylist [i]> mylist [i - 1]:' вы имеете в виду ', если mylist [i]> l'? А потом просто полностью отпустите ветку 'else'. – roganjosh

ответ

1

Если вы хотите найти самое большое и наименьшее число, вы можете выпустить инструкции еще. Это работает:

x = int(input("Enter the number of integers you want: ")) 

mylist = [int(z) for z in input("Enter the numbers separated by a space and then click Enter: ").split()] 


l = mylist[0] 

for i in range(1, x): 
    if mylist[i] > l: # I changed mylist[i-1] to l 
     l = mylist[i] 


s = mylist[0] 

for i in range(1, x): 
    if mylist[i] < s: # I changed mylist[i-1] to s 
     s = mylist[i] 


print((l, s), "are the largest and smallest numbers") 

minmax() 
+1

Upvote, потому что этот ответ хотя бы изменяет исходный код, а не заменяет его. Вы должны подумать над тем, чтобы добавить объяснение причин сбоя исходного кода. – roganjosh

+0

спасибо, это сработало –

2

Как насчет просто с помощью min() и max() функции? Например:

>>> my_list = [2, 6, 9, 4, 8 ,7] 
>>> min(my_list) 
2 
>>> max(my_list) 
9 

Что касается ошибки в вашем коде. Вы должны внести изменения в состояние if. Изменение:

  • if mylist[i] > mylist[i - 1] ->if mylist[i] > l: и

  • if mylist[i] < mylist[i - 1] ->if mylist[i] < s:

и удалить else часть.

+0

Хотя это был очевидный ответ, он не объясняет, почему код OP не ведет себя так, как они ожидают. – roganjosh

+0

Очевидно, потому что это упражнение в реализации алгоритма, а не просто получение ответа. – Barmar

Смежные вопросы