采用类的方法来构造代码:
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()
他的执行情况如下,大家也可自行在编辑器内执行:
另外关于类的方法,我就不一一说明了,大家可看此文章: