2016-04-20 6 views
0

Я пытаюсь написать код, который вводит ввод плавающих чисел от пользователя, сортировка значений в порядке возрастания. Я попробовал варианты, найденные в Stack Overflow, но он все еще не работает. Это часть моего кода:Сортировка списка ввода плавающих чисел.

if option == 'f': 
    x = input() 
    y = (sorted(x, key=lambda z: float(z))) # sort float ascending 
    print(y) 

.

>>> Input: 5.0 , 4.9 , 3.1, 0.5  
Output: 0.5, 3.1, 4.9, 5.0 

Как я могу получить список чисел с плавающей запятой и распечатать отсортированный результат?

+1

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

+1

Есть ли ошибка? Вы на python2.x или 3.x? – mgilson

+0

Я использую python 3.5. Ответ от mhawke работает, но я все еще пытаюсь настроить несколько вещей. Это код, который у меня есть до сих пор. Но я получаю сообщение об ошибке, когда я ввожу список поплавков, разделенных пробелом. 'if option == 'f':' \t 'x = (s.strip() для s в input(). split (''))' \t 'y = (отсортировано (x, key = lambda z: float (z))) '\t # sort float по возрастанию \t' print (y) ' – brazjul

ответ

3

Вам необходимо разбить входной номер на строку на отдельные строки чисел с плавающей точкой, а затем отсортировать их по плавающей запятой. Следующий код расщепляется на запятых и удаляет пробелы перед сортировкой:

if option == 'f': 
    x = (s.strip() for s in input().split(',')) 
    y = (sorted(x, key=lambda z: float(z))) # sort float ascending 
    print(y) 

Воспроизводит:

 
['0.5', '3.1', '4.9', '5.0'] 

Вы также можете распечатать это следующим образом:

>>> print(', '.join(y)) # using join() 
0.5, 3.1, 4.9, 5.0 
>>> print(*y, sep=', ') # Python 3 style print function 
0.5, 3.1, 4.9, 5.0 
+0

Спасибо! это работает. Я все еще пытаюсь настроить несколько вещей. Потому что я все еще получаю некоторые ошибки в зависимости от того, как я ввожу плавающие числа. Если я вхожу в один поплавок, он работает. Если я введу список, разделенный запятой или пробелом. Я получаю значение Ошибка. Traceback (самый последний вызов последнего): 'File "qwikifwlistmgr", строка 48, в ' ' у = (отсортированных (х, ключ = лямбда г: поплавок (г))) \t # сортировать поплавок ascending' ' File "qwikifwlistmgr", строка 48, в ' ' y = (отсортировано (x, key = lambda z: float (z))) \t # sort float по возрастанию' 'ValueError: не удалось преобразовать строку в float: '4.3, 24.4'' – brazjul

0

Ваш вход является строкой типа str. Вы должны разделить его и преобразовать в float. @mhawke дает хороший пример.