Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 7
1

Статистики

26.02.2020, 13:37. Просмотров 1090. Ответов 5
Метки нет (Все метки)

Напишите функцию print_statistics(arr), которая принимает список целых чисел и печатает несколько так называемых статистик этого списка: число элементов, среднее значение, минимальный и максимальный элемент в списке, медиану списка.

Медианой называется число, больше которого ровно половина списка. В отсортированном списке из нечетного числа элементов он находится ровно посередине. Если элементов в списке четное число, то медианой является любое из значений, лежащих между двумя центральными элементами. Обычно в таких случаях выбирают среднее значение от двух центральных элементов. Мы просим вывести его.

Для пустого списка вместо всех статистик выведите нули.

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

Например, вызов print_statistics([3,5,8,4]) должен последовательно распечатать на экране все статистики:

4
5.0
3
8
4.5

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

Пример 1
Ввод Вывод
print_statistics([])
0
0
0
0
0
Пример 2
Ввод Вывод
print_statistics([22])
1
22.0
22.0
22.0
22.0
Примечания
Функция ничего не читает из стандартного ввода. Список чисел она принимает в качестве параметра, который ему передает проверяющая программа.

Напоминаем: чтобы получить отсортированный список, вы можете воспользоваться методом sort().
Помогите найти ошибку
Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def print_statistics(arr):
    number = len(arr)
    if number != 0:
        number1 = 0
        count = 0
        for i in arr:
            count += 1
        srednee = sum(arr) / number
        minl = min(arr)
        maxl = max(arr)
        arr = sorted(arr)
        if number % 2 == 0:
            number1 = (number - 2) // 2
            mediana = (int(arr[number1]) + int(arr[number1 + 1])) / 2
        else:
            number1 = (number - (number % 2)) // 2
            mediana = arr[number1]
            print(number, srednee, minl, maxl, mediana, sep="\n")
    elif number == 1:
        number = 1
        srednee = float(arr[0])
        minl = min(arr)
        maxl = max(arr)
        mediana = arr[0]
        print(number, srednee, minl, maxl, mediana, sep="\n")
    else:
        number = 0
        srednee = 0
        minl = 0
        maxl = 0
        mediana = 0
        print(number, srednee, minl, maxl, mediana, sep="\n")
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2020, 13:37
Ответы с готовыми решениями:

Парадоксы статистики 1
Если разбить большой набор данных на части, всегда ли среднее средних, медиана медиан, мода мод...

Статистики списка чисел
Напишите функцию print_statistics(arr), которая принимает список целых чисел и печатает несколько...

Собираем данные по пользователям из некой группы в вк для статистики
Ребята, врываюсь на форум. Нужен совет. извиняюсь, так как уверен, что похожие темы были, но в...

Разделение файла по 8 байт и записью в txt с выводом статистики
Доброго времени, прошу помощи с реализацией данной задачи. Нужно взять файл (exe, mp3, bmp, и...

5
98 / 72 / 29
Регистрация: 17.10.2018
Сообщений: 276
27.02.2020, 09:03 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def print_statistics(arr):
    mediana = None
    number = None
    if not len(arr):
        print('Список пустой или не предоставлен')
    else:
        number = len(arr)
        number1 = (number - 1) // 2
        if number % 2 == 0:
            mediana = (arr[number1] + arr[number1 + 1]) / 2
        else:
            mediana = arr[number1]
 
        print(f'Длина списка - {number}, Среднее - {sum(arr) / number}, '
              f'Минимальное значение - {min(arr)}, Максимальное значение - {max(arr)}, '
              f'Медиана списка - {mediana}')
 
 
print_statistics([3, 4, 5, 8])
print_statistics([3, 4, 5, 8, 9])
print_statistics([22])
print_statistics([])
Вывод:
Длина списка - 4, Среднее - 5.0, Минимальное значение - 3, Максимальное значение - 8, Медиана списка - 4.5
Длина списка - 5, Среднее - 5.8, Минимальное значение - 3, Максимальное значение - 9, Медиана списка - 5
Длина списка - 1, Среднее - 22.0, Минимальное значение - 22, Максимальное значение - 22, Медиана списка - 22
Список пустой или не предоставлен
0
482 / 279 / 95
Регистрация: 07.11.2019
Сообщений: 768
27.02.2020, 09:45 3
Lekks, вы забыли отсортировать список, прежде чем считать медиану.
0
98 / 72 / 29
Регистрация: 17.10.2018
Сообщений: 276
27.02.2020, 09:48 4
Лучший ответ Сообщение было отмечено Алина_ли как решение

Решение

Цитата Сообщение от u235 Посмотреть сообщение
Lekks, вы забыли отсортировать список, прежде чем считать медиану.
точно)) с IDLE в PyCharm тянул кусками, потерял))) Sorry

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def print_statistics(arr):
    mediana = None
    number = None
    if not len(arr):
        print('Список пустой или не предоставлен')
    else:
        arr = sorted(arr)
        number = len(arr)
        number1 = (number - 1) // 2
        if number % 2 == 0:
            mediana = (arr[number1] + arr[number1 + 1]) / 2
        else:
            mediana = arr[number1]
 
        print(f'Длина списка - {number}, Среднее - {sum(arr) / number}, '
              f'Минимальное значение - {min(arr)}, Максимальное значение - {max(arr)}, '
              f'Медиана списка - {mediana}')
 
 
print_statistics([5, 3, 4, 8])
print_statistics([5, 4, 3, 8, 9])
print_statistics([22])
print_statistics([])
1
482 / 279 / 95
Регистрация: 07.11.2019
Сообщений: 768
27.02.2020, 09:51 5
Ну и если список уже отсортирован, то вызывать ф-ции min max не нужно. Это просто 0ой и -1-ый элемент списка.
0
98 / 72 / 29
Регистрация: 17.10.2018
Сообщений: 276
27.02.2020, 09:53 6
Цитата Сообщение от u235 Посмотреть сообщение
Ну и если список уже отсортирован, то вызывать ф-ции min max не нужно. Это просто 0ой и -1-ый элемент списка.
Да, можно просто arr[0] arr[-1]

будет быстрее )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2020, 09:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

У Алевтины возникла новая идея для занимательной статистики
У Алевтины возникла новая идея для занимательной статистики. Поэтому она просит Вас написать...

Построение статистики миграции населения из-за границы во временном и территориальном разрезе
Построение статистики миграции населения из-за границы во временном и территориальном разрезе ...

Сбор статистики
Есть 2000 человек, на каждого человека есть карта. Необходимо иметь информацию о том, какой продукт...

По поводу статистики
Вопрос такой - как сайт стал подниматься, появилась куча "потенциальных рекламодателей", как они...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.