当前位置:   article > 正文

用python怎么输出个人信息,python输入输出学生信息_输入“姓名”、“性别”之一时,分别输出对应的信息。 输入其他信息时,输出“输入

输入“姓名”、“性别”之一时,分别输出对应的信息。 输入其他信息时,输出“输入

本篇文章给大家谈谈python输入自己的姓名,输出hello,某某某同学,以及python输入姓名打印学生信息,希望对各位有所帮助,不要忘了收藏本站喔。

校验身份证号码并输出个人信息

类型:流程控制

描述

中国目前采用的是18位身份证号,其第7-10位数字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性别,奇数为男性,偶数为女性,第18位是校验位

如果身份证号码的其中一位填错了(包括最后一个校验位),则校验算法可以检测出来python编程代码大全。如果身份证号的相邻2位填反了,则校验算法可以检测出来。校验规则如下:

  1. 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
  2. 将这17位数字和系数相乘的结果相加。
  3. 用加出来和除以11,看余数只可能是:0-1-2-3-4-5-6-7-8-9-10
  4. 分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
  5. 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X(大写英文字母X)。如果余数是10,身份证的最后一位号码就是2。

用户输入一个身份证号,校验其是否是合法的身份证号码:

  1. 输入长度是否合法
  2. 输入数据校验位是否合法
  3. 输入数据中年月日范围是否合法,考虑闰年。如身份证号码不合法输出 '身份证校验错误',如身份证号码合法则分别在3行中输出'身份证号码校验为合法号码'以及该人的出生年月日和性别。

输入格式

一个18位身份证号,末位为数字或大写字母X

输出格式

如身份证号码不合法输出 '身份证校验错误',

如身份证号码合法则分别在3行中输出'身份证号码校验为合法号码'以及该人的出生年月日和性别。(月份和日期均为2位数表示)

示例 1

  1. 输入:       
  2. 432831196411150810
  3. 输出:
  4. 身份证号码校验为合法号码
  5. 出生:19641115
  6. 性别:男

示例 2

  1. 输入:
  2. 432831196811150810
  3. 输出:
  4. 身份证校验错误

参考代码

较为复杂的一道题,蛮需要耐心的。

  1. import datetime  # 导入datetime模块用于获取当年年份
  2. def leap(year):
  3.     return True if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0) else False
  4. # 校验身证号中的年月日及校验码
  5. def check_date(id_num):
  6.     """校验身证号中的年月日,年月日值均要合法"""
  7.     # 年份超过当前年,或月份小于1或大于12,或日期小于1或大于31时非法
  8.     if int(id_num[6:10]) > datetime.datetime.now().year or int(id_num[10:12]) < 1 or int(id_num[10:12]) > 12 or int(
  9.             id_num[12:14]) < 1 or int(id_num[12:14]) > 31:
  10.         return False
  11.     if int(id_num[10:12]) in [4, 6, 9, 11] and int(id_num[12:14]) > 30# 当月份为4,6,9,11时,日期超过30即非法
  12.         return False
  13.     if int(id_num[10:12]) == 2 and int(id_num[12:14]) > 29# 月份为2时,日期大于29便非法
  14.         return False
  15.     if int(id_num[10:12]) == 2 and leap(int(id_num[6:10])) == False and int(
  16.             id_num[12:14]) > 28# 月份为2时,如果不是闰年,日期大于28便非法
  17.         return False
  18.     else:
  19.         return True
  20. def check_sum(id_num):
  21.     """计算检验位"""
  22.     ls = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
  23.     id_num_sum = sum([ls[i] * int(id_num[i]) for i in range(17)])  # 计算校验和
  24.     if id_num[17] == 'X':
  25.         return True if id_num_sum % 11 == 2 else False
  26.     elif (id_num_sum % 11 + int(id_num[17])) % 11 == 1:
  27.         return True
  28.     else:
  29.         return False
  30. def print_info(id_num):
  31.     """输出信息"""
  32.     year = int(id_num[6:10])
  33.     month = id_num[10:12]
  34.     day = id_num[12:14]
  35.     if len(id_num) == 18 and check_date(id_num) and check_sum(id_num):  # 先判断长度是否是18位,再判断校验和
  36.         gender = '女' if int(id_num[16]) % 2 == 0 else '男'
  37.         print('身份证号码校验为合法号码')
  38.         print('出生:{}年{}月{}日'.format(year, month, day))
  39.         # print('年龄:{}'.format(datetime.datetime.now().year - year))
  40.         print('性别:{}'.format(gender))
  41.     else:
  42.         print('身份证校验错误')
  43. if __name__ == '__main__':
  44.     id_number = input()
  45.     print_info(id_number)
文章知识点与官方知识档案匹配,可进一步学习相关知识
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/408450
推荐阅读
相关标签
  

闽ICP备14008679号