
Ballabandis
6 год назад
Дан список людей с указанием их фамилии, имени и даты рождения.Напишите программу, которая будет определять самого старшего человека из этого списка и выводить его фамилию и имя, а если в списке есть неКак узнать сколько самых старших людей с одинаковой датой рождения, то определять их количество.ВХОДНЫЕ ДАННЫЕНа вход программе в первой строке подается количество людей в списке N. В каждой из последующих N строк находится информация в следующем формате:<Фамилия> <Имя> <Дата рождения>где <Фамилия> – строка, состоящая не более, чем из 20 символов без пробелов,<Имя> – строка, состоящая не более, чем из 20 символов без пробелов,<Дата рождения> – строка, имеющая вид ДД.ММ.ГГГГ, где ДД – двузначное число от 01 до 31, ММ – двузначное число от 01 до 12, ГГГГ – четырехзначное число от 1800 до 2100.ВЫХОДНЫЕ ДАННЫЕПрограмма должна вывести фамилию и имя самого старшего человека в списке. Если таких людей, неКак узнать сколько, то программа должна вывести их количество.spisok = {}N = int(input())for i in range(N):dannye = input()dannye = dannye.split()if dannye[2] not in spisok:spisok[dannye[2]] = [dannye[0] + ' ' + dannye[1]]else:spisok[dannye[2]].append(dannye[0] + ' ' + dannye[1])year = 10000month = 100000day = 100000for key in spisok:key1 = key.split('.')key1[0] = int(key1[0])key1[1] = int(key1[1])key1[2] = int(key1[2])if key1[2] < year:fio = spisok[key]year = key1[2]month = key1[1]day = key1[0]key2 = keyif key1[2] == year:if key1[1] < month:fio = spisok[key]month = key1[1]day = key1[0]key2 = keyif key[1] == month:if key1[0] < day:fio = spisok[key]day = key1[0]key2 = keyif len(spisok[key2]) > 1:print (len(spisok[key2]))else:print(str(fio[0]))Вот я решение на питоне написал, у меня 7 из 10 тестов проходят. Может кто помочь ошибку найти?
ОТВЕТЫ

Seidel Stephanie
Oct 24, 2020
'''
Ввод:
3
Человек Первый 02.04.1994
Человек Второй 30.07.1994
Человек Третий 09.01.1994
Вывод:
Человек Третий
=====
Ввод:
3
Человек Первый 02.04.1994
Человек Второй 30.07.1994
Человек Третий 02.04.1994
Вывод:
2
'''
from datetime import date
age_days = []
n = int(input())
for _ in range(n):
*name, dob = input().split()
d, m, y = map(int, dob.split('.'))
days = (date.today() - date(y, m, d)).days
age_days.append((' '.join(name), days))
max_val = max(age_days, key=lambda x: x[1])[1]
max_names = [name for name, days in age_days if days == max_val]
if len(max_names) == 1:
print(max_names[0])
else:
print(len(max_names))
Ввод:
3
Человек Первый 02.04.1994
Человек Второй 30.07.1994
Человек Третий 09.01.1994
Вывод:
Человек Третий
=====
Ввод:
3
Человек Первый 02.04.1994
Человек Второй 30.07.1994
Человек Третий 02.04.1994
Вывод:
2
'''
from datetime import date
age_days = []
n = int(input())
for _ in range(n):
*name, dob = input().split()
d, m, y = map(int, dob.split('.'))
days = (date.today() - date(y, m, d)).days
age_days.append((' '.join(name), days))
max_val = max(age_days, key=lambda x: x[1])[1]
max_names = [name for name, days in age_days if days == max_val]
if len(max_names) == 1:
print(max_names[0])
else:
print(len(max_names))
289
Смежные вопросы: