Найти - Пользователи
Полная версия: Сортировка списка
Начало » Python для новичков » Сортировка списка
1 2 3
Agera
Помогите отсортировать список.
Есть такой код:

Может кто еще подскажет как найти медиану списка?????
Нельзя использовать оператор деления по модулю!!!!

count=0
List=[]
total=0
while True:
    a= input("enter a number or Enter to finsh:")
    if a:
     try:
        number=int(a)
     except ValueError as err:
         print(err)
         continue
     total+=number
     count+=1 
     list.append(List,number)
     Li=len(List)          
    else:
       break       
i=0
min=List[i]
max=List[i]
while i<len(List):
    if List[i]<min:
        min=List[i]
    if List[i]>max:
        max=List[i]
    i+=1
I=1
J=1  
for I in (count):      #сортировка списка List
    for J in (count-I):
        if List[i]>List[i+1]:
            temp=List[i]
            List[i]=List[i+1]
            List[i+1]=temp
        J+=1
    I+=1
print ("sdfgdfgd ========------", count)
if count:
    print("List = ",List)
    print("count = ",count,"Total = ",total,"Seredne = ", total/count, "Min = ", min, "Max = ", max)
Shaman
Это смешно, что-ль? Возле ValueError и list.append, недалеко, было про help(list).
Думал бубль гум уже не выпускают.
Agera
Непонят что Shaman имеете ввиду.

Может кто еще подскажет как найти медиану списка?????
Нельзя использовать оператор деления по модулю!!!!
sergeek
а что такое медиана списка?
Shaman
А код уже заработал?
Agera
Да код заработал, с сортировкой разобрался!

Медиана — это число в середине набора чисел: половина чисел имеют значения большие, чем медиана, а половина чисел — меньшие. Например, медианой для 2, 3, 3, 5, 7 и 10 будет 4.

Вот код:
count=0
List=[]
total=0
while True:
    a= input("enter a number or Enter to finsh:")
    if a:
     try:
        number=int(a)
     except ValueError as err:
         print(err)
         continue
     total+=number
     count+=1 
     list.append(List,number)
     Li=len(List)          
    else:
       break       
i=0
min=List[i]
max=List[i]
while i<len(List):
    if List[i]<min:
        min=List[i]
    if List[i]>max:
        max=List[i]
    i+=1 
if count:
    print("List = ",List)
    print("count = ",count,"Total = ",total,"Seredne = ", total/count, "Min = ", min, "Max = ", max)
for I in range(count):
    idxMin=I
    for J in range(I+1,count):
        if List[J]<List[idxMin]:
            idxMin=J
    temp=List[idxMin]
    List[idxMin]=List[I]
    List[I]=temp       
print(List)
sergeek
а для списка 1 2 3 4 что будет медианой?
Agera
Медиана(Википедия)

в выборке {1, 2, 3, 4} медианой, по определению, может служить любое число из интервала (2,3)). На практике в этом случае чаще всего используют среднее арифметическое двух средних значений.
Shaman
Выбирать меньшее из максимальных и большее из минимальных. Из полученных двух сотворить медиану.
И если проход сортировки прошел без обмена, сортировку можно прекращать - список может быть достаточно упорядоченным.
sergeek
def med(lst):
    lst = sorted(lst)   
    hf = len(lst) // 2
    if hf*2 == len(lst):
        return (max(lst[:hf]) + min(lst[hf:])) / 2
    else:
        return lst[hf]
    
med([2,3,3,5,7,10])
Out[17]: 4.0
med([1,2,3,4])
Out[18]: 2.5
оно не очень, правда
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB