7-2 身份证号判断性别与出生日期
早期中国的居民身份证由15位数字后来组成。国务院决定自1999年10月1日起公民身份证号码由15位升至18位。
15位居民身份证号码是由15位得数字组成,排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码(年份月份日期都是两位),三位数字顺序码。三位数字顺序码男性使用1、3、5、7、9等奇数,女性使用2、4、6、8、0等偶数。 18位居民身份证号码排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码(男性使用1、3、5、7、9等奇数,女性使用2、4、6、8、0等偶数)和一位数字校验码。
身份证号码可以用正则表达式判断是否合法,也可以用字符串判断来判断。
从键盘输入一串15位 或18位的字符串。 首先判断该字符串中表示日期的字符串是否符合日期字符串,若不符合则给出提示。 例如 输入:3501021990229403X, 则输出:Error,日期不合法
若日期合法则认为该字符符合中国的居民身份证编码(本题假设除了日期有可能输错,其他不会输错)
若输入字符是15位符合中国的居民身份证编码,则输出性别 与 以类似于“1990年10月01日”的形式的出生日期。
例如:输入350102901001402,则输出:女,1990年10月01日
若输入字符是18位符合中国的居民身份证编码,则输出性别 与 以类似于“2000年10月01日”的形式的出生日期。
例如:输入35010220001001403X,则输出:男,2000年10月01日
{特别备注说明:本题考核点为字符串应用,在测试样例中给出否让身份证号码只符合上述规则,没有判断区号与验证码是否有意义,未经过身份证验证接口API(公安部实时接口)验证}
输入格式:
键盘读入一串字符串
输出格式:
输出相应的结果
输入样例1:
在这里给出一组输入。例如:
35010219990229401X
输出样例1:
在这里给出相应的输出。例如:
Error,日期不合法
输入样例2:
在这里给出一组输入。例如:
350102901001412
输出样例2:
在这里给出相应的输出。例如:
女,1990年10月01日
输入样例3:
在这里给出一组输入。例如:
35010220001001403X
输出样例3:
在这里给出相应的输出。例如:
男,2000年10月01日
str =input()
l = len(str)
def 性别(str):
if l == 15:
str = int(str[-1])
if l == 18:
str = int(str[-2])
if str in [1,3,5,7,9]:
sex = '男'
else:
sex = '女'
return sex
def 日期合法性(n,y,r):
month = [0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if(y<=0 or y>12 or r<=0 or r>31):
return 0
elif(n%4 == 0 and n%100 != 0 or n%400==0):
month[2] += 1
return r <= month[y]
def 提取日期(str,l):
global tem,n,y,r
if l == 15:
str = str[6:12]
n = "19"+str[0:2]
y = str[2:4]
r = str[4:6]
tem = "{0}年{1}月{2}日".format(n, y, r)
n = int(n);y = int(y);r = int(r)
if l == 18:
str = str[6:14]
n = str[0:4]
y = str[4:6]
r = str[6:8]
tem = "{0}年{1}月{2}日".format(n, y, r)
n = int(n);y = int(y);r = int(r)
def 身份(str,l):
提取日期(str, l)
if 日期合法性(n,y,r):
print(性别(str),tem,sep=',')
else:
print("Error,日期不合法")
身份(str,l)
7-6 找出最大值和最小值
输入若干个(至少一个)正整数,输出它们的最大值和最小值。
输入格式:
在一行中输入若干个数,以空格分隔。
输出格式:
按以下形式输出最大值和最小值: Max=? Min=?
输入样例:
在这里给出一组输入。例如:
4 5 67 3 99 2 7
输出样例:
在这里给出相应的输出。例如:
Max=99
Min=2
def max_and_min(list1):
max_n = max(list1)
min_n = min(list1)
return ("Max=%d\nMin=%d"%(max_n,min_n))
i = input()
list1 = list(map(int,i.split(' ')))
print(max_and_min(list1))