Функция сортировки не сортирует списки пользовательского ввода - PullRequest
0 голосов
/ 26 апреля 2020
Numbers = []
QN = input("what are the numbers")
Numbers.append(QN)

def Median():
  median = sorted(Numbers)
  print ("Sorted:", median)
Median()

Это мой код, и я пытаюсь создать программу, в которой пользователь вводит список чисел, а программа перечисляет их от наименьшего к наибольшему, используя функцию сортировки. Проблема в том, что он не печатает отсортированный список, а печатает оригинальный несортированный список. Я не могу понять проблему, список номеров, которые дал пользователь, добавлен в список, но кажется, что список не сортируется.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020
import time
Numbers = []
A = int(input("how many numbers are in the list"))
time.sleep(.5)
print ("Can you please enter the numbers?")
time.sleep(.3)
for i in range(A):
  data = int(input())
  Numbers.append(data)

def Median():
  median = sorted(Numbers)
  print median
  if A%2 == 0:
    one = int(A/2) - 1  
    two = one + 1
    One = median[one]
    Two = median[two]
    sum = (One + Two)
    Ans = sum/2
    print ("The median is " + str(Ans))
  else:
    one = int(A/2)  
    One = median[one]
    print ("The median is " + str(One))

Кажется, это работает. этот код будет работать?

0 голосов
/ 26 апреля 2020

Сортированная функция берет список и сортирует его элементы. Итак,

In [2]: sorted([1])                                                                                                                                                                            
Out[2]: [1]

Список из одного элемента уже считается отсортированным, поскольку нет порядка для одного номера.

In [1]: sorted([312,321,213])                                                                                                                                                                  
Out[1]: [213, 312, 321]

Три рассматриваются как числа и соответственно сортируются.

In [2]: sorted(['312','33','321'])                                                                                                                                                             
Out[2]: ['312', '321', '33']

Существуют рассматриваемые строки и сортируются по алфавиту

In [3]: sorted('231')                                                                                                                                                                          
Out[3]: ['1', '2', '3']

Строка также считается списком символов, поэтому символы сортируются по алфавиту.

QN = input("what are the numbers")

def Median():
  median = sorted(QN)
  print ("Sorted:", median)
Median()

Вот как вы можете заставить ваш текущий код работать.

Но это, вероятно, то, что вы хотите сделать:

def Median(lst): 
  median = sorted(lst) 
  return median # you have to work on this further to actually calculate the median, this will just return the sorted list.


Numbers = [] 
QN = 'placeholder' # put a placeholder so we can enter the loop 
print('enter your numbers, one number in each line, empty line to end') 
while (QN != ''): 
  QN = input() 
  if (QN != ''): 
    Numbers.append(int(QN)) # make sure you put the int() because you don't want to consider the numbers as strings because in that case they will be sorted alphabetically. 


print ("Sorted:", Median(Numbers))                                                                                                                                                                               

результат:

enter your numbers, one number in each line, empty line to end
1
32
23
21
24

Sorted: [1, 21, 23, 24, 32]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...