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

Проблема с задачей 10-11 класс

29.04.2020, 23:31. Показов 918. Ответов 9

Студворк — интернет-сервис помощи студентам
Задание : в файле хранится Фамилия Имя и баллы за предметы(физика, русский и математика), т.е. за три предмета)
надо написать программу, которая выведет в другой файл данные участника и баллы(суммировано) , отсортировав по убыванию

Пример:
П.Мордкович 240



Два кода - две неудачные попытки, помогите


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Fin = open("file.txt",encoding='utf8')
Fout = open("file2.txt", "w")
 
while True:
    s = Fin.readline()
    if not s: break
    point = s.split(' ')
    if point[2]> 80:
        Fout.write(s)
print(Fout)
Fin.close()
Fout.close()
 
print("Результат записан в файл file2.txt")




Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
A=[]
B=[]
F=open('file.txt')
 
for s in F:
    point = s.split(' ')
    A.append(s[1][0]+'.'+s[0])
    B.append(int(s[2])+int(s[3])+int(s[4]))
print(A)
for i in range(n-1):
    for j in range(n-i-1):
        if B[j]<B[j+1]:
            B[j],B[j+1]=B[j+1],B[j]
            A[j],A[j+1]=A[j+1],A[j]
for i in range(len(B)):
    if B[i]>240:
        print(A[i],B[i])
    else: break
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2020, 23:31
Ответы с готовыми решениями:

Проблема с задачей
вот текст задачи: Создать 3 линейных массива из 7 элементов, каждый элемент – запись об очередном объекта. Каждый массив должен быть...

Проблема с задачей
Всем ку, проблемка с задачей. Условия : Номер может начинаться как с +7, так и с 8 Допускается любое количество любых...

Проблема с задачей
Программа для выявления анаграмм. Ограничение по времени - 4 сек., программе требует чуть больше, как можно уменьшить кол-во времени? ...

9
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
30.04.2020, 00:00
Каждый из представленных примеров делает что-то своё и каждый раз не то, что нужно по условию. Вы сами-то какой код написали? Ощущение, что вы просто прикрепили левые примеры. С чем у вас конкретно сложности?
1
0 / 0 / 0
Регистрация: 29.04.2020
Сообщений: 5
30.04.2020, 00:05  [ТС]
мой код первый , второй код написали мои одноклассники и я его не особо понимаю.
Сложности с тем, что надо разбить массив на две части - имя и баллы, а потом каким-то образом баллы сложить
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
30.04.2020, 00:24
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Fin = open("file.txt",encoding='utf8')
Fout = open("file2.txt", "w")
 
# Создаём словарь для хранение пар (имя: сумма баллов)
rating = {}
 
while True:
    s = Fin.readline()
    if not s:
        break
    # Тут вы разделяете строку на слова по пробелам
    point = s.split()
 
    # Сохраняем данные в словарь
    rating[point[0]] = sum(int(item) for item in point[1:])
 
Fin.close()
 
# После надо сортировать и записать в итоговый файл
 
Fout.close() 
print("Результат записан в файл file2.txt")
В словаре лежат уже суммы баллов. Сделал всё то, с чем у вас были сложности.
0
0 / 0 / 0
Регистрация: 29.04.2020
Сообщений: 5
30.04.2020, 00:35  [ТС]
rating[point[0]] = sum(int(item) for item in point[1:])
не понимаю эту строчку, она вообще что должна делать?
у меня в файле записан: Какашечкин Максим 70 80 100
Выводит: 100
70
80
Какашечкин
Максим

А должно: М. Какашечкин 250

Но всё равно - Большое спасибо!
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
30.04.2020, 12:33
Строчка
Python
1
rating[point[0]] = sum(int(item) for item in point[1:])
Сохраняет в словарь rating пары (имя: сумма баллов). Но у вас выше было написано, что имя будет в формате П.Мордкович. Если у вас имя подаётся в формате Какашечкин Максим, то строка должна выглядеть так:
Python
1
rating[f'{point[1][0]}.{point[0]}'] = sum(int(item) for item in point[1:])
Например, если у вас в файле написано
Code
1
2
3
4
Какашечкин Максим 70 80 100
Иванов Иван 10 20 30
Петров Петр 20 30 40
Сидоров Сидор 30 40 50
То после выполнения кода, в словаре rating у вас будут пары:

Python
1
2
3
4
{'М.Какашечкин': 250,
 'И.Иванов': 60,
 'П.Петров': 90,
 'C.Сидоров': 120}


Цитата Сообщение от alina_alya_leon Посмотреть сообщение
Выводит: 100
70
80
Какашечкин
Максим
Я не знаю, что у вас там выводится, потому что код, который я написал, вообще ничего не должен выводить.
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
30.04.2020, 18:16
unfindable_404, словарь то тут и не нужен. ученики то все разные и у каждого свои баллы. достаточно работать с списком который получиться при считывании файла построчно
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
data = [
    'Какашечкин Максим 70 80 100',
    'Иванов Иван 10 20 30',
    'Петров Петр 20 30 40',
    'Сидоров Сидор 30 40 50'
        ]
 
def sum_ball(line):
    return (' '.join(line[:2]), sum(int(i) for i in line[2:]))
 
nev_data = [sum_ball(line.split())  for line in data]
for res in sorted(nev_data, key = lambda x : x[1],reverse = True):
    print(*res)
====
Какашечкин Максим 250
Сидоров Сидор 120
Петров Петр 90
Иванов Иван 60
>>>
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
30.04.2020, 18:50
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
словарь то тут и не нужен. ученики то все разные
Я как раз и использовал словарь, потому что ученики все разные, ибо ключи должны быть уникальными.

А вообще, согласен, можно и без словаря, а просто сохранять пары в список кортежами. Я, вообще, написал вариант со словарём, так как с начала не правильно прочитал задание.

Python
1
2
3
4
5
rating = []
 
...
 
rating.append(f'{point[1][0]}.{point[0]}', sum(int(item) for item in point[1:])
Но, с другой стороны, этот список можно легко получить и из словаря методом dict.items()
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,300
30.04.2020, 19:33
Цитата Сообщение от unfindable_404 Посмотреть сообщение
Но, с другой стороны, этот список можно легко получить и из словаря методом dict.items()
зачем из списка в словарь а потом опять в список? тут только нужно баллы посчитать и по ним сортировать а взять их из списка можно срезом. что я и сделал. словарь бы пригодился если бы каждый ученик был записан несколько раз с одним баллом типа так
Какашечкин Максим 70
Какашечкин Максим 80
Какашечкин Максим 100
и так для каждого ученика. вот тут словарь поможет собрать все баллы одного ученика
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
30.04.2020, 19:43
Semen-Semenich, полностью согласен с вами. Я же написал, что использовал словарь, потому что неправильно прочитал задачу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2020, 19:43
Помогаю со студенческими работами здесь

Проблема с задачей
При помощи итераторов и функций высшего порядка выведите список комментариев с указанием номера строки у каждого из них (нумерация строк с...

Проблема с задачей
код для зашифровки и дешифровки шифром Цезаря. ALPHA = &quot;&quot;.join(map(chr, range(ord(&quot; &quot;), ord(&quot;я&quot;) + 1))) def...

Проблема с задачей
Здраствуйте, у меня возникла проблема с задачей, есть код, она работает корректно, но преподователь хочет что бы был вывод деревьев, что бы...

Проблема с задачей
Нельзя себе даже представrить, сколько объятий, дружеских тумаков и щелчков получил Пиноккио в доказательство искреннего и нерушимого...

Проблема с задачей:
Назовём натуральное число подходящим, если у него больше 17 различных делителей (включая единицу и само число). Определите количество...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru