天天看點

1028 人口普查 python

1028 人口普查 (20 分)

某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。

這裡確定每個輸入的日期都是合法的,但不一定是合理的——假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,是以超過 200 歲的生日和未出生的生日都是不合理的,應該被過濾掉。

輸入格式:

輸入在第一行給出正整數 N,取值在(0,10​5​​];随後 N 行,每行給出 1 個人的姓名(由不超過 5 個英文字母組成的字元串)、以及按

yyyy/mm/dd

(即年/月/日)格式給出的生日。題目保證最年長和最年輕的人沒有并列。

輸出格式:

在一行中順序輸出有效生日的個數、最年長人和最年輕人的姓名,其間以空格分隔。

輸入樣例:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20
           

輸出樣例:

3 Tom John
           

這個題可能拿别的語言寫有點麻煩,但是python對這個題來說真的友善啊。。一開始我也沒想到,看見了Raaay233的代碼才想起來, 這種日期的比較,可以直接當作字元串來比較,即'2001/05/12'<'2014/09/06'這樣

N=int(input())
ls=[]
for i in range(N):
    ls.append(input().split())
#print(ls)
str_max=['2014/09/06','']
str_min=['1814/09/06','']
cnt=0
for i in range(N):
    if ls[i][1]>='1814/09/06' and ls[i][1]<='2014/09/06':
        cnt+=1
        if ls[i][1]<str_max[0]:
            max1=ls[i][0]
            str_max[0]=ls[i][1]
        if ls[i][1]>str_min[0]:
            min1=ls[i][0]
            str_min[0]=ls[i][1]
if cnt==0:
  print(0)
else:
  print(cnt,max1,min1)
           

代碼和Raaay233的非常像(畢竟是看了人家的以後寫的,大體思路也是人家的),背着寫的啊,沒有故意照着寫

而且這段代碼在最後一個測試點上逾時了