Уведомления

Группа в Telegram: @pythonsu

#1 Март 23, 2013 20:00:53

Agera
Зарегистрирован: 2013-03-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка списка

Помогите отсортировать список.
Есть такой код:

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

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)

Отредактировано Agera (Март 23, 2013 21:01:02)

Офлайн

#2 Март 23, 2013 20:28:19

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сортировка списка

Это смешно, что-ль? Возле ValueError и list.append, недалеко, было про help(list).
Думал бубль гум уже не выпускают.

Офлайн

#3 Март 23, 2013 20:55:35

Agera
Зарегистрирован: 2013-03-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка списка

Непонят что Shaman имеете ввиду.

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

Отредактировано Agera (Март 23, 2013 21:01:57)

Офлайн

#4 Март 23, 2013 21:02:33

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Сортировка списка

а что такое медиана списка?

Офлайн

#5 Март 23, 2013 21:04:10

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сортировка списка

А код уже заработал?

Офлайн

#6 Март 23, 2013 21:07:14

Agera
Зарегистрирован: 2013-03-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка списка

Да код заработал, с сортировкой разобрался!

Медиана — это число в середине набора чисел: половина чисел имеют значения большие, чем медиана, а половина чисел — меньшие. Например, медианой для 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)

Офлайн

#7 Март 23, 2013 21:11:45

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Сортировка списка

а для списка 1 2 3 4 что будет медианой?

Офлайн

#8 Март 23, 2013 21:15:05

Agera
Зарегистрирован: 2013-03-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка списка

Медиана(Википедия)

в выборке {1, 2, 3, 4} медианой, по определению, может служить любое число из интервала (2,3)). На практике в этом случае чаще всего используют среднее арифметическое двух средних значений.

Офлайн

#9 Март 23, 2013 21:22:49

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Сортировка списка

Выбирать меньшее из максимальных и большее из минимальных. Из полученных двух сотворить медиану.
И если проход сортировки прошел без обмена, сортировку можно прекращать - список может быть достаточно упорядоченным.

Отредактировано Shaman (Март 23, 2013 21:38:06)

Офлайн

#10 Март 23, 2013 21:48:37

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Сортировка списка

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
оно не очень, правда

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version