Python期末复习题:字符串与产生随机数

Python期末复习题:字符串与产生随机数

一、身份证号基本信息

提取身份号码中的日期与性别。中国的居民身份证号是一个18个字符的字符串:

第7–14位数字表示出生年、月、日;第17位数字表示性别,奇数表示男性,偶数表示女性。

输入一个合法的身份证号,输出其出生年月日。

测试说明:

输入:530126193303150409

输出:

出生: 1933年03月15日

性别: 女

sfz = input()
l = len(sfz)
t = sfz[0:17]
n = 0
for i in t:
    num = ord(i)
    if 48 <= num <= 57:
        n = n + 1
if l >= 18 and n == 17:
    year = sfz[6: 10]
    month = sfz[10: 12]
    day = sfz[12: 14]
    sex = int(sfz[16])
    if sex % 2 == 0:
        sex = '女'
    else:
        sex = '男'
    print(f'出生:{year}{month}{day}日\n性别:{sex}')

运行的结果是:

530126193303150409
出生:19330315日
性别:女

二、分类统计各字符的个数

分类统计字符个数。输入一个字符串,统计字符串里英文字母、数字和其他字符的个数。

测试示例:

输入:123 The operators in and not in test for membership 456.

输出:字母39个, 数字6个, 其他字符11个

s = input()
char, num, other = 0, 0, 0
for i in s:
    if i.isdigit():
        num += 1
    elif i.isalpha():
        char += 1
    else:
        other += 1
print(f"字母{char}个,数字{num}个,其他字符{other}个")

运行的结果是:

123 The operators in and not in test for membership 456.
字母39个,数字6个,其他字符11

三、字符串加密

字符串加密。在一行中输入一个包括大小写字母和数字的字符串,编程将其中字母都转为大写,然后将大写字母用该字母后的第4个字母替换,其他字符原样输出,实现字符串加密。

测试:

输入:

LIFE is SHORT, you NEED PYTHON

输出:

PMJI MW WLSVX, CSY RIIH TCXLSR

strs = input()
for i in strs:
    if ord('A') <= ord(i) <= ord('Z'):
        print(chr(ord('A') + (ord(i) - ord('A') + 4) % 26), end='')
    else:
        print(i,end='')

运行的结果是:

LIFE is SHORT, you NEED PYTHON 
PMJI is WLSVX, you RIIH TCXLSR

四、随机产生验证码

用户在网络上注册或登录各平台时,经常需要输入验证码。这些验证码采取随机生成的方式产生,包含大小写字母和数字。用户输入验证码时,一般不区分大小写(提示:用户输入时不区分大小写,在验证前可以将用户输入的字符串和验证码中的大写字母都转为小写字母;或反过来,将所有小写字母转换为大写字母,再进行匹配验证)。

要求产生长度为6位字母数字的验证码,并且对用户的输入的验证码进行验证。

(提示:为了方便产生字符串,允许导入字符串处理库string。string.ascii_letters可以产生所有的大小写英文字符;string.digits产生0~9十个数字字符。)

import random
import string
  
def verification_code(size):
    code = ''.join([random.choice(
                        string.ascii_letters + string.digits)
                        for n in range(size)])                     
    return code
def verify():
    ver_code = verification_code(6)
    input_ver_code = input(f'请输出验证码{ver_code}:')
    if input_ver_code.lower() == ver_code.lower():
        print('验证码正确')
    else:
        print('验证码错误')
verify()

运行的结果是:

请输出验证码UMaf6j:uuuu
验证码错误
请输出验证码wolR9i:wolr9i
验证码正确
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-北天-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值