fname = input('Имя файла: ')
ffile = open(fname)
sample = [] # список значений
for i in ffile:
i = i.split()
for j in i:
j = int(j)
sample.append(j)
length = len(sample)
minimum = min(sample)
maximum = max(sample)
print('Длина последовательности:',length)
print('Минимальное значение:',minimum)
print('Максимальное значение:',maximum)
def make_urange(urange,uranges): # заполняет список диапазонов
i = minimum
while i <= maximum:
l = []
l.append(i)
i = i + urange
if i < maximum:
l.append(i-1)
else:
i = maximum + 1
l.append(maximum)
uranges.append(l)
uranges = []
way_range = input('Размерность диапазона(a), количество диапазонов(b), \
\nyказать диапазоны(c): ')
if way_range == 'a': # по размеру диапазона
urange = int(input('Размерность диапазона: '))
make_urange(urange,uranges)
elif way_range == 'b': # по количеству диапазонов
qty_range = int(input('Количество диапазонов: '))
urange = round((maximum-minimum+1)/qty_range)
make_urange(urange,uranges)
elif way_range == 'c': # по указанным вручную диапазонам
i = 1
srange = input(str(i)+'-й диапазон (n - конец): ')
while srange != 'n':
i = i + 1
srange = srange.split()
srange[0] = int(srange[0])
srange[1] = int(srange[1])
uranges.append(srange)
print(uranges)
srange = input(str(i)+'-й диапазон (n - конец): ')
analysis = [] # количество значений в диапазонах
length = len(uranges) # сколько диапазонов
i = 0
while i < length: # Колич. значений в каждом диапазоне...
analysis.append(0) # устанавливается в 0.
i += 1
for i in sample: # Проверка каждого элемента в списке значений...
j = 0
for k in uranges: # на принадлежность к каждому диапазону.
if k[0] <= i <= k[1]:
analysis[j] = analysis[j] + 1
#break элемент может входить в несколько диапазонов
j += 1 # переход к следующему диапазону
print('Количество значений в диапазонах:')
k = 0
for i,j in uranges:
pct = round((analysis[k]/len(sample))*100,2)
print(str(i)+'-'+str(j)+':',str(analysis[k]),'('+str(pct)+'%)')
k += 1
Функция определения диапазонов (make_urange)
- В качестве аргумента принимает размер диапазона и пустой список, куда будут добавляться границы вычисленных диапазонов.
- Обе границы каждого диапазона являются его допустимыми значениями («включительно»). Поэтому, прибавив размер диапазона, требуется вычесть единицу, иначе диапазон будет больше указанного размера (из-за включенного крайнего значения).
- Получившееся i — это начало следующего диапазона.
- Когда вычисленное i превосходит или равно maximum, i присваивается значение больше максимума, чтобы прервать цикл, а в правую границу диапазона записывается максимум.