python复习题

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))
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值