Дан список людей с указанием их фамилии, имени и даты рождения. Напишите программу, которая будет определять самого старшего человека из этого списка и выводить его фамилию и имя, а если в списке есть несколько самых старших людей с одинаковой датой рождения, то определять их количество. ВХОДНЫЕ ДАННЫЕ На вход программе в первой строке подается количество людей в списке 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 = 10000 month = 100000 day = 100000 for 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 = key if key1[2] == year: if key1[1] < month: fio = spisok[key] month = key1[1] day = key1[0] key2 = key if key[1] == month: if key1[0] < day: fio = spisok[key] day = key1[0] key2 = key if len(spisok[key2]) > 1: print (len(spisok[key2])) else: print(str(fio[0])) Вот я решение на питоне написал, у меня 7 из 10 тестов проходят. Может кто помочь ошибку найти?

Вопрос школьника по предмету Информатика

Дан список людей с указанием их фамилии, имени и даты рождения.
Напишите программу, которая будет определять самого старшего человека из этого списка и выводить его фамилию и имя, а если в списке есть несколько самых старших людей с одинаковой датой рождения, то определять их количество.
ВХОДНЫЕ ДАННЫЕ

На вход программе в первой строке подается количество людей в списке 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 = 10000
month = 100000
day = 100000

for 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 = key
if key1[2] == year:
if key1[1] < month:
fio = spisok[key]
month = key1[1]
day = key1[0]
key2 = key
if key[1] == month:
if key1[0] < day:
fio = spisok[key]
day = key1[0]
key2 = key

if len(spisok[key2]) > 1:
print (len(spisok[key2]))
else:
print(str(fio[0]))

Вот я решение на питоне написал, у меня 7 из 10 тестов проходят. Может кто помочь ошибку найти?

Ответ учителя по предмету Информатика

»’

Ввод:

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))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей