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

Вывести фамилии призывников, получивших отсрочку по болезни

23.12.2017, 00:15. Показов 6530. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с задачей, совсем не получается.

Требуется составить программу, которая бы по имеющемуся списку призывников в
файле pryzyv.txt и списку заболеваний в файле bolezny.txt, по причине которых могут
освободить от срочной службы в армии, выводила бы в файл otsrochka.txt список
призывников, которым дана отсрочка. (строка содержит фамилию, имя, отчество и год
рождения призывника через запятую, затем следует знак двоеточие, после которого
через запятую перечисляются заболевания призывника)

Входные данные:
Входные данные считываются из двух текстовых файлов pryzyv.txt и bolezny.txt.
Формат данных файла pryzyv.txt:
Фамилия Имя Отчество: заболевание1, заболевание2, и т. д.
Формат данных файла bolezny.txt:
заболевание1
заболевание2 и т.д..

Выходные данные:
Выходные данные выводятся в текстовый файл otsrochka.txt в формате: Фамилия1,
Фами- лия2 и т.д.

Указания:
Для хранения информации о каждом призывнике, используйте словарь.

Подсказка:

Один из способов создания словаря:
personalInfo = 'Иванов Иван Иванович'
keys = ('Фамилия', 'Имя', 'Отчество')
exampleDict = dict(zip(keys, personalInfo.split()))
print(exampleDict)
// {'Имя': 'Иван', 'Фамилия': 'Иванов', 'Отчество': 'Иванович'}

Вот что вышло у меня, работает не так как нужно. Не знаю что делать

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
def cleanList(dict_bolezn):
    for k in range(len(dict_bolezn)):
        if dict_bolezn[k] == ',' or dict_bolezn[k] == '\n':
            dict_bolezn[k] = '';
 
    dict_bolezn = ''.join(dict_bolezn);
    return dict_bolezn;
 
pryzyv_file = open('pryzyv.txt','r',encoding='utf-8');
bolezny_file = open('bolezny.txt','r',encoding='utf-8');
line = pryzyv_file.readlines();
keys = ('Имя','Фамилия','Отчество','Болезни')
 
for i in range(len(line)):
    string = line[i];
    for j in range(len(string)):
        if string[j] == ':':
            personal_info = string[:j]
            example_dict = dict(zip(keys,personal_info.split()))
            example_dict.update({'Болезнь':string[j+1:]})
            dict_bolezn = list(example_dict.setdefault('Болезнь'))
            dict_bolezn = cleanList(dict_bolezn);
 
            checking_bolezn = bolezny_file.readlines();
            checking_bolezn = cleanList(checking_bolezn);
            print(list(checking_bolezn))
            if checking_bolezn in dict_bolezn:
                print(example_dict.setdefault('Фамилия'))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2017, 00:15
Ответы с готовыми решениями:

Вывести фамилии учеников, получивших оценку 5
В файле записаны результаты экзаменов в виде <Фамилия> , <Имя> <Оценка>. Напишите программу, которая выводит на экран фамилии учеников...

Вывести фамилии людей получивших заданную оценку
Помогите вот еще, У меня тут задачка типа: Сделать програму какая находит и пичатает фамилии людей, что получили заданую оценку, вот у меня...

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

1
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,299
23.12.2017, 10:11
Цитата Сообщение от strekozlinski Посмотреть сообщение
Для хранения информации о каждом призывнике, используйте словарь
Python
1
2
dct = {}
dct['Иванов Иван Иванович'] = ['заболевание1', 'заболевание2']
потом смотришь заболевания из другого файла и проверяешь есть ли призывник(ключ) в значении(списке) которого есть это заболевание если есть то выводишь ключ. хотя можно и без словаря обойтись
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2017, 10:11
Помогаю со студенческими работами здесь

Вывести фамилии и даты рождения студентов, не получивших ни одной оценки "3"
вывести фамилии и даты рождения студентов, не получивших ни одной оценки "3"

Распечатать фамилии и даты рождения студентов, не получивших оценку 3
Ввести информацию о 10 студентах группы. Информация содержит фамилию, имя, отчество студента, год рождения, четыре оценки за экзамены...

Определить фамилии студентов, получивших на экзамене хотя бы одну оценку “Неуд”
Разработайте процедуру с использованием инструкции Do Until для решения следующей задачи. В таблице Excel, приведённой ниже, требуется...

Записи. Распечатать список студентов, фамилии которых начинаются с букв М, Н и Л и не получивших ни одной 2
Ребят, помогите пожалуйста.. Кто чем может, заранее спасибо. Очень надо. 18. Задача на записи. Распечатать список студентов,...

Создать список студентов и внести туда фамилии, потом вывести на экран отдельно фамилии мальчиков и фамилии девочек
Создать список студентов и внести туда фамилии, потом вывести на экран отдельно фамилии мальчиков и фамилии девочек


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru