Войти
или
Зарегистрироваться
Маркетплейс
Курсы
Учебник
Учебник 2.0
ЕГЭ
ОГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Python по шагам — отладчик
Питон - Черепашка
Эмулятор исполнителя Робот - Кумир
Редактор HTML Code
SQLite Studio - работа с БД
Статья Автор:
Лебедев Дмитрий Алексеевич
Для тестов
def round_to_2(x): return round(float(x), 2) def split_line(line, sep): ans, ss, z = [], line, sep t ='' j = 0 while j < len(ss) : if ss[j] == '"' : j += 1 while j <len(ss): if ss[j] == '"': j += 1 break t += ss[j] j += 1 continue elif ss[j] == z : ans.append(t) t ='' j += 1 continue else : t += ss[j] j += 1 continue ans.append(t) return ans def read_csv_and_calc_mean(lines, sep, column_name): n_col = split_line(lines[0], sep) icol = n_col.index(column_name) k, sk = 0, 0 for ss in lines[1:]: data = split_line(ss, sep)[icol] sk += float(data) k += 1 return round_to_2(sk/k) def my_solve_sl(line, sep): ans, ss, z = [], line, sep t ='' j = 0 while j < len(ss) : if ss[j] == '"' : j += 1 while j <len(ss): if ss[j] == '"': j += 1 break t += ss[j] j += 1 continue elif ss[j] == z : ans.append(t) t ='' j += 1 continue else : t += ss[j] j += 1 continue ans.append(t) return ans def my_solve_rc(lines, sep, column_name): n_col = split_line(lines[0], sep) icol = n_col.index(column_name) k, sk = 0, 0 for ss in lines[1:]: data = split_line(ss, sep)[icol] sk += float(data) k += 1 return round_to_2(sk/k) def check(lines, sep,col_name): etalon1 = my_solve_sl(lines[0], sep) try : ans1 = split_line(lines[0], sep) except : return 'NO, ошибка ввызова split_line' etalon2 = my_solve_rc(lines, sep, col_name) try : ans2 = read_csv_and_calc_mean(lines, sep, col_name) except : return 'NO, ошибка ввызова read_csv_and_calc_mean' try: if len(ans1) != len(etalon1) : return ('NO, split_line: неправильная длина списка') for i in range (len(etalon1)): if ans1[i] != etalon1[i] : return 'NO, split_line_' +str[i] except : return 'NO, split_line: ошибка сравнения ответов' try : if ans2 != etalon2: return 'NO, read_csv_and_calc_mean: ошибочный ответ' except : return 'NO, read_csv_and_calc_mean: ошибка сравнения ответов' return 'YES' file_name = input() sep=input() col_name = input() fin = open(file_name,'r',encoding = 'utf-8-sig') lines =[s.strip() for s in fin if len(s)>1] sout = check(lines, sep,col_name) print(sout)
×
Attached files
3_95498_Движение товаров.csv
3_95498_Магазин.csv
3_95498_Товар.csv
Печать