python代码判断身份证号是男是女
之前看过其他相关类似的代码,但是感觉大家都是简单的判断了一下倒数第二位是单数还是双数,感觉判断不是很严谨,所以自己又添加了一些东西进去;解题思路:1.首先判断用户输入的数据长度是否是18位;2.然后判断前17位是否是纯数字且最后一位是否是"X"或者数字;3.然后获取用户输入数据的倒数第二位,并且转换成int类型,因为input输入的数字默认是str类型;4.拿下标16的数进行取余,判断是 单数还是
·
之前看过其他相关类似的代码,但是感觉大家都是简单的判断了一下倒数第二位是单数还是双数,感觉判断不是很严谨,所以自己又添加了一些东西进去;
解题思路:
1.首先判断用户输入的数据长度是否是18位;
2.然后判断前17位是否是纯数字且最后一位是否是"X"或者数字;
3.然后获取用户输入数据的倒数第二位,并且转换成int类型,因为input输入的数字默认是str类型;
4.拿下标16的数进行取余,判断是 单数还是双数;
这个时候我们需要了解一个常识问题:身份证号码上的第17位数字(也就是倒数第二位)表示性别
单数表示男性,双数表示女性。
# 方案一:
id = input('请输入身份证号:') # input() 用户输入数据
if len(id) != 18: # 如果输入的数据长度不是18位
print('您输入的身份证位数不正确') # 提示输入位数不正确
else: # 如果是18位
id_1 = id[0:17] # 取前17位
id_2 = id[17] # 取最后一位
if id_1.isdigit() and (id_2 == 'X' or id_2.isdigit()): # 如果前17位是是纯数字,后一位是X或者数字
n = int(id[16]) # 取数据的倒数第二位并且转换成int类型
if n % 2 == 0: # 如果可以整除,是偶数,则为女性
print('您的性别是女')
else: # 否则是男性
print('您的性别为男')
else: # 前17位是不是纯数字,后一位不是X或者数字
print("请输入正确的身份证号码")
方案二:
id = input('请输入身份证号:') # input() 用户输入数据
if len(id) != 18: # 如果输入的数据长度不是18位
print('您输入的身份证位数不正确') # 提示输入位数不正确
else: # 如果是18位
id_1 = id[0:17] # 取前17位
id_2 = id[17] # 取最后一位
if not(id_1.isdigit() and (id_2 == 'X' or id_2.isdigit())): # 如果前17位是不是纯数字,后一位不是X或者数字
print("请输入正确的身份证号码") # 则不正确
else: #
n = int(id[16]) # 取数据的倒数第二位,并且转换成int类型
if n % 2 == 0: # 如果可以整除,是偶数,则为女性
print('您的性别是女')
else: # 否则是男性
print('您的性别为男')
# 判断数据类型
# id = input("请输入数字:")
# print(type(id)) # <class 'str'>
如果你看到感觉还是其他写法可以评论补充哦~
更多推荐
已为社区贡献1条内容
所有评论(0)