python实现判断身份证号码基本信息

采用类的方法来构造代码:

from datetime import datetime


class A:
    def __init__(self):
        sex_list = ["male", "Male", "female", "Female"]
        while True:
            self.sex = input("请输入您的性别,男性为male或Male,女性为female或Female:\n")
            if self.sex not in sex_list:
                print("请输入正确的性别英文单词!")
            else:
                break


class B(A):
    def __init__(self):
        super().__init__()
        while True:
            self.idcard_number = (input("请输入身份证号:"))
            if len(self.idcard_number) != 18:
                print("输入的身份证不是十八位,请重新输入:")
            else:
                if self.idcard_number.isnumeric() == 0 and (self.idcard_number[17]) != 'X' and (
                        self.idcard_number[17]) != 'x':
                    print(
                        "....输入的身份证号不正确,,请检查是否除最后一位数字外有不是数字的数,亦或是最后一位不是大小写的'X'....")
                elif int(self.idcard_number[16]) % 2 == 0 and (self.sex == "male" or self.sex == "Male"):
                    print("你输入的性别为男性,但身份证第17位数字为偶数,请检查!")
                elif int(self.idcard_number[16]) % 2 != 0 and (self.sex == "female" or self.sex == "Female"):
                    print("你输入的性别为女性,但身份证第17位数字为奇数,请检查!")
                else:
                    break


class C(B):
    def __init__(self):
        super().__init__()
        self.year = int(self.idcard_number[6:10])
        self.month = int(self.idcard_number[10:12])
        self.date = int(self.idcard_number[12:14])
        print(f"您出生于{self.year}年{self.month}月{self.date}日")

        if self.year % 400 == 0 or (self.year % 4 == 0 and self.year % 100 != 0):
            leap_year = 1
            print(f"您出生的年份{self.year}年为闰年")
        else:
            print(f"您出生的年份{self.year}年为平年")

            week_cn = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
            _date = datetime.date(datetime(year=self.year, month=self.month, day=self.date))
            self.n = _date.weekday()  # “weekday”函数返回0-6的整数,分别代表星期一到星期日
            print("{0}年{1}月{2}日是{3}".format(self.year, self.month, self.date, week_cn[self.n]))


C()

他的执行情况如下,大家也可自行在编辑器内执行:

另外关于类的方法,我就不一一说明了,大家可看此文章:

python基础解析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One>twenty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值