Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 03.11.2022
Сообщений: 4

В чем проблема этой функции?

06.11.2022, 19:10. Показов 5046. Ответов 2

Студворк — интернет-сервис помощи студентам
Реализуйте функцию read_csv_and_calc_mean_solution, которая по переданному списку строк, считанных из csv-файла, и названию конкретной колонки вычисляет среднее значение в этой колонке. При этом можно считать, что в указанной колонке все значения по умолчанию целочисленные.
  • Аргументы функции read_csv_and_calc_mean_solution:

lines — список строк, прочитанных из csv-файла. В первой строке всегда идут названия колонок csv-файла;
sep — разделитель, который используется в строках для отделения различных значений;
column_name — название колонки с целочисленными значениями, по которой нужно посчитать среднее.
В результате работы функция read_csv_and_calc_mean_solution должна возвращать среднее значение в заданной колонке, округлённое до 2 знаков после запятой с помощью функции round_to_2, которая уже реализована.

В блокноте с задачами этого модуля уже есть заготовка для функции read_csv_and_calc_mean_solution.
  • Вспомогательные функции

В процессе реализации функции воспользуйтесь уже подготовленной функцией split_line, которая принимает на вход строку в формате csv и используемый в строке разделитель, а возвращает список значений, которые хранятся в переданной строке.

Для приведения строкового значения к численному при расчёте среднего значения в указанной колонке воспользуйтесь встроенной в Python функцией int, которая преобразует строку в число.
  • Формат сдачи решения

В качестве ответа на задание приведите код реализованной функции. Важно, что сама функция не должна ссылаться ни на какие внешние переменные, которые определены вне функции. Также в коде функции запрещено использовать ключевое слово import.

При этом функция может ссылаться на функцию round_to_2 и на функцию split_line.

Эта функция готова, в ней якобы все верно

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def split_line(line, sep):
    res = []
    
    prev_ind = -1
    in_quotes = False
    
    for i in range(len(line)):
        ch = line[i]
        
        if ch == '"':
            in_quotes = not in_quotes
            
        if not in_quotes and ch == sep:
            res.append(line[prev_ind + 1:i].strip('"'))
            prev_ind = i
            
    if prev_ind < len(line) - 1:
        res.append(line[prev_ind + 1:len(line)].strip('"'))
    elif prev_ind == len(line) - 1:
        res.append('')
    
    return res
Ну тут тоже всё ясно
Python
1
2
def round_to_2(x):
    return round(x, 2)
А вот эта функция на готовых данных для проверки работает, но при отправке задания в сириусе выдается ошибка:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def read_csv_and_calc_mean_solution(lines, sep, column_name):
    sp = []
    for i in lines:
        sp.append(split_line(i, sep))
    column = sp[0]
    sp.pop(0)
 
    df = pd.DataFrame(sp, columns = column)
    alist = df[column_name].tolist()
    sum = 0
    for i in alist:
        sum += int(i)
    return round_to_2(sum/len(alist))
Функция для проверки:
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
def read_csv_and_calc_mean_tests():
    example_1_lines = [
        'Жанр,"Продолжительность, часы","Продолжительность, минуты",Страна производства,Год производства',
        'Боевик,0,36,Италия,1996',
        'Комедия,1,23,Россия,1999',
        'Триллер,2,21,США,2006',
    ]
    example_1_sep = ','
    example_1_column = 'Год производства'
    example_1_res = 2000.33
    
    assert read_csv_and_calc_mean_solution(example_1_lines, example_1_sep, example_1_column) == example_1_res
    
    example_2_lines = [
        'Жанр,"Продолжительность, часы","Продолжительность, минуты",Страна производства,Год производства',
        'Боевик,0,36,Италия,1996',
        'Комедия,1,23,Россия,1999',
        'Триллер,2,21,США,2006',
        'Комедия,1,48,США-Россия,2012',
        'Драма,2,3,Франция,2016',
        'Документальный,2,47,Германия,2001'
    ]
    example_2_sep = ','
    example_2_column = 'Продолжительность, минуты'
    example_2_res = 29.67
    
    assert read_csv_and_calc_mean_solution(example_2_lines, example_2_sep, example_2_column) == example_2_res
    
    print('Все тесты прошли успешно!')
P.S. ошибка, скорее всего, в моей невнимательности где-либо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2022, 19:10
Ответы с готовыми решениями:

Выдает ошибку, а я не могу понять в чем проблема. В чем проблема, скажите пожалуйста!
dx=0.0005; epsillon=0.00002; i=0; for x= 0:0.0005:3 i=i+1; if x&lt;1 y (i)=-1; elseif x&lt;2 S=0; ...

В чём проблема? Подчеркивает математические функции
в чём проблема?

Почему у меня график функции нормального распределения не симметричный? Проблема в выборке или в чём?
Всем привет. У меня имеется выборка из 200 значений. Я по ней построил интервальный ряд по всем правилам. Выборка смахивает на нормальное...

2
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
07.11.2022, 10:40
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
def split_line_1(line, sep):
    t = line.split(sep)
    for l in t:
        if l[0] == '"':
            c = l[1:]
            t.remove(l)
        if l[-1] =='"':
            l = c + ' ' + l[:-1]
    return t
 
def read_csv_and_calc_mean_solution(lines, sep, column_name):
    c = split_line_1(lines.pop(0), sep).index(column_name)
    return round(sum(int(split_line_1(l, sep)[c]) for l in lines) / len(lines), 2)
 
example_1_lines = [
    'Жанр,"Продолжительность, часы","Продолжительность, минуты",Страна производства,Год производства',
    'Боевик,0,36,Италия,1996',
    'Комедия,1,23,Россия,1999',
    'Триллер,2,21,США,2006',
    ]
example_1_sep = ','
example_1_column = 'Год производства'
example_1_res = 2000.33
print(read_csv_and_calc_mean_solution(example_1_lines, example_1_sep, example_1_column))
0
0 / 0 / 0
Регистрация: 05.07.2024
Сообщений: 2
05.09.2024, 09:53
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def split_line(line, sep):
    ans=[]
    s=''
    times=0
    sep0=sep
    for i in range (len(line)):
        if line[i]=='"' and times%2==0:
            sep='"'
            times+=1
            continue
        elif line[i]=='"' and times%2==1:
            sep=sep0
            times+=1
            continue
        if line[i]!=sep:
            s+=line[i]
        elif line[i]==sep:
            ans.append(s)
            s=''
    ans.append(s)
    return ans
    pass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2024, 09:53
Помогаю со студенческими работами здесь

Проблема с кодом. Выдает ошибку, я не могу понять в чем проблема
Работаю первый раз с Maple. Установлен версии 2015 года. Выдает ошибку я не могу понять в чем проблема Вот код: restart: ...

Для функции y=f(x) получить таблицу значений и график этой функции на отрезке
Для функции y=f(x) получить таблицу значений и график этой функции на отрезке. Количество точек на промежутке задается пользователем....

Для функции y=f(x) получить таблицу значений и график этой функции на отрезке
Для функции y=f(x) получить таблицу значений и график этой функции на отрезке. Количество точек на промежутке задается пользователем. ...

Как в функции вернуть значение, а потом продолжить работу этой функции?
Есть функция main, которая возвращает определенное значение. Это значение должно вернутся в течении 1.5 секунд. Проблема в том, что в этой...

Для функции y=f(x) получить таблицу значений и график этой функции на отрезке
Дана задача: Для функции y=f(x) получить таблицу значений и график этой функции на отрезке. Количество точек на промежутке задается...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru