python 开发一个程序,从文件中读取一个人的姓名、生日和性别,并输出十位数的国民身份证(NIC)号码[已关闭]

new9mtju  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(129)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

16小时前关门了。
Improve this question
练习L7.E1
开发一个程序,从文件中读取一个人的姓名、生日和性别,并输出十位数的国民身份证(NIC)号码。程序的唯一输入是文件名。
身份证的前四位数字是出生年份,接下来的三位数字是从当年1月1日到出生日期的天数。例如:Jan 1st - 1,Jan 2nd - 2,......,Feb 1st - 32,......如果这个人是女性,则在该值上增加500。接下来的3位数字按特定出生年份的提交顺序分配。输入文件包含按提交顺序排列的记录,其中每个属性用空格分隔。
示例:
输入文件的内容
萨曼1990-05-03 M阿鲁尼1990-04-06 F库马兰1988-03-05 M纳扎尔1997-09-24 M
预期输出文件的内容Saman 1990123001 Aruni 1990596002 Kumaran 1988065001 Nazar 1997267001
开发一个程序,从文件中读取一个人的姓名、生日和性别,并输出十位数的国民身份证(NIC)号码。程序的唯一输入是文件名。
身份证的前四位数字是出生年份,接下来的三位数字是从当年1月1日到出生日期的天数。例如:Jan 1st - 1,Jan 2nd - 2,......,Feb 1st - 32,......如果这个人是女性,则在该值上增加500。接下来的3位数字按特定出生年份的提交顺序分配。输入文件包含按提交顺序排列的记录,其中每个属性用空格分隔。
示例:
输入文件的内容
萨曼1990-05-03 M阿鲁尼1990-04-06 F库马兰1988-03-05 M纳扎尔1997-09-24 M
预期输出文件的内容Saman 1990123001 Aruni 1990596002 Kumaran 1988065001 Nazar 1997267001

doinxwow

doinxwow1#

使用datetime获取一年中的日期,并初始化一个字典来跟踪一年中的应用程序。
这是密码

from datetime import datetime

years = {}

with open('Details.txt', 'r') as f:
    records = f.read().split('\n')
    
for record in records:
    record = record.strip().split(' ')
    
    dob = datetime.strptime(record[1], '%Y-%m-%d').timetuple()
    year = dob.tm_year
    day_of_year = dob.tm_yday if record[2] == 'M' else dob.tm_yday + 500
    
    if year in years:
        years[year] += 1

    else:
        years[year] = 1

    with open('NIC.txt', 'a+') as f:
        f.write(f"{record[0]} {year}{day_of_year:03}{years[year]:03}\n")

这是输入文件。

Saman 1990-05-03 M
Aruni 1990-04-06 F
Kumaran 1988-03-05 M
Nazar 1997-09-24 M

输出结果是

Saman 1990123001
Aruni 1990596002
Kumaran 1988065001
Nazar 1997267001

相关问题