Проблема с list в python

Я написал небольшую программу для того, чтобы в каждой строке выводилось наименьшее число (это обязательно нужно было сделать через split).

m = []
s = ['end'] #ключ стопер
while True:
   n = input().split() #вводим через сплит
   k = min(n) #ищем минимальное
   if n == s:
       break
   m.append(k)
for i in m: #выводим красиво
   print(i)

В принципе, программа работает почти корректно, но я не заметил одну странность. Если вводить -100, то тогда оно всегда будет наименьшим, даже если условно есть -200. Можете подсказать, в чем ошибка? Почему list отдает приоритет -100?


Ответы (1 шт):

Автор решения: Dark Space

Проблема в том, что input возвращает тип str, поэтому вы сравниваете строки, а не числа. Попробуйте применять функции int() или float() для каждого числа перед тем, как выбирать минимальное.
Как пример:

numbers = [] # Список для минимальных чисел 

# До тех пор, пока пользователь не введёт 'end'
while answer:= input('Введите числа - (end = выход)') != 'end': 
    # К каждому числу из разбитой строки применяю функцию `float()` 
    number_line = [float(item) for item in answer.split()]
    # Ищу минимальное и добавляю его в набор 
    min_num = min(number_line)
    numbers.append(min_num)
    
for item in numbers: 
    print(item)
→ Ссылка