Анализ выборки

Описание задачи

Часто требуется проанализировать какой-то ряд значений и определить количество значений, попавших в каждый определенный диапазон. Например, дан список, содержащий 1000 значений натуральных чисел в диапазоне от 1 до 100. Требуется подсчитать, сколько значений попало в диапазоны от 1 до 20, от 21 до 30, от 31 до 40 и т.д. Полученный таким образом результат можно использовать для построения графиков и диаграмм частот встречаемости значений.

Пример исходного кода на Python

#анализируемый список (можно подставить другой)
a = [3,5,7,3,8,1,8,0,7,3,2,4,6,8,5,4,3,3,6,5,7,8,9,5,3,2,3]
 
bottom = int(input("нижняя граница: "))
top = int(input("верхняя граница: "))
interval = int(input("интервал: "))
 
#количество интервалов
num_interval = int((top - bottom) / interval)
 
top = bottom #опускаем верхнюю границу до нижней
for i in range(num_interval): #выполняется подсчет значений для каждого интервала
    bottom = top #сдвиг нижней границы к верхней
    top = top + interval #сдвиг верхней границы на величину интервала
    print("От",bottom,"до",top)
    calculator = 0 #счетчик для подсчета количества значений в текущем интервале
    for j in a: #проверяется каждый элемент в списка ...
        if bottom <= j < top: #на вхождение в текущий интервал, в случае успеха ...
            calculator += 1 #увеличение значения счетчика
    print (calculator,"значений \n")

Свои 5 копеек вставлю

Свои 5 копеек вставлю

отображение результата неккоректно - показываются интервал исследования от bottom (включен в область i интервала ) до top (он в область не включен).
Смущает, когда задал интервал 3, а тебе в ответе пишут
"интервал от 0 до 3". Это же четыре цифры!
строчку -6 предлагаю в таком виде

    print('От',bottom,'до',top-1)

также, предлагаю "доверить" вычисление минимального и максимального значения массива
функциям min(a) max(a) (строки 2 и 3)
bottom = min(a)
top = max(a)

Прошу указать на недостатки

Прошу указать на недостатки моей версии программы, если они есть:

a = [3,5,7,3,8,1,8,0,7,3,2,4,6,8,5,4,3,3,6,5,7,8,9,5,3,2,3]
 
bottom = int(input("нижняя граница: "))
top = int(input("верхняя граница: "))
print("От",bottom,"до",top)
 
calculator = 0
for i in a:
    if bottom <= i < top:
        calculator += 1
 
print(calculator,"значений \n")

Ваша программа считает

Ваша программа считает количество значений, попавших в один диапазон. Программа выше сложнее, т.к. считает количество значений, попавших во множество диапазонов.

Со счетчиком вы перемудрили.

Со счетчиком вы перемудрили. Предлагаю такой вариант:

import random
 
lst = [random.randint(1,9) for i in range(20)]
print "List:", lst
 
up = max(lst)
bottom = min(lst)
num_bins = 3 # Bins: 1-3, 4-6, 7-9
 
bin_width = (up - bottom)/num_bins + 1
 
b = bottom
u = bottom + bin_width
for i in range(num_bins):
    bin = range(b, u)
    lst_in_bin = [i for i in lst if i in bin]
    print "From %d to %d: %d" % (bin[0], bin[-1], len(lst_in_bin)), \
          "--", lst_in_bin
    b += bin_width 
    u += bin_width

может, Ваш код и

может, Ваш код и прогрессивнее, но тут учат азам, от простого к сложному. Я код автора могу прочитать. Ваш код в некоторых местах новичку не прочитать.