目录

  • 1 前言
    • 1.1  Python解释器安装
    • 1.2  PyCharm开发环境
  • 2 Python程序设计实验
    • 2.1  实验1 基本输入输出
    • 2.2  实验2 基本运算
    • 2.3  实验3 字符串处理
    • 2.4  实验4 列表与元组应用
    • 2.5  实验5 列表与元组应用
    • 2.6  实验6 字典与集合应用
    • 2.7  实验7 函数应用1
    • 2.8  实验8 函数应用2
    • 2.9  实验9 类的创建与应用
    • 2.10  实验10 模块应用
    • 2.11  实验11 文件操作
    • 2.12  实验12 异常处理
    • 2.13  实验13 使用正则表达式
    • 2.14  实验14 tkinter基础应用
  • 3 学习参考
    • 3.1  1 Python及其IDLE环境
    • 3.2  2 Python代码规范
    • 3.3  3 使用变量
    • 3.4  4 输入输出
    • 3.5  5 运算符
    • 3.6  6 字符串
    • 3.7  7 条件语句
    • 3.8  8 循环语句
    • 3.9  9 列表
    • 3.10  10 元组
    • 3.11  11 字典
    • 3.12  12 集合
    • 3.13  13 自定义函数
    • 3.14  14 内置函数
    • 3.15  15 类的创建和使用
    • 3.16  16 类的继承与多态
    • 3.17  17 time模块
    • 3.18  18 os模块
    • 3.19  19 random模块
    • 3.20  20 文件
    • 3.21  21 错误与异常处理
 实验13 使用正则表达式

任务1:电影信息提取

1、下面代码用于从电影信息字符串中提取排名前五的电影信息。请将代码补充完整。

2、程序保存到s13A.py。

import re

a="""

rating:9.52,title:肖申克的救赎,actors:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿,

rating:9.71,title:霸王别姬,actors:张国荣,张丰毅,巩俐,

rating:9.36,title:控方证人,actors:泰隆·鲍华,玛琳·黛德丽,查尔斯·劳顿,

rating:9.48,title:伊丽莎白,actors:玛雅·哈克福特,安德烈 鲍尔,

rating:9.26,title:美丽人生,actors:罗伯托·贝尼尼,尼可莱塔·布拉斯基,

rating:9.63,title:辛德勒的名单,actors:连姆·尼森,本·金斯利,拉尔夫·费因斯,

rating:9.50,title:这个杀手不太冷,actors:让·雷诺,娜塔莉·波特曼,加里·奥德曼,

rating:9.67,title:阿甘正传,actors:汤姆·汉克斯,罗宾·怀特,加里·西尼斯,

rating:9.40,title:十二怒汉,actors:亨利·方达,马丁·鲍尔萨姆,约翰·菲德勒,

rating:9.53,title:泰坦尼克号,actors:莱昂纳多·迪卡普里奥,凯特·温丝莱特,

rating:9.68,title:背靠背,脸对脸,actors:牛振华,雷恪生,李强,

rating:9.69,title:灿烂人生,actors:路易吉·洛·卡肖,阿莱西奥·博尼,

rating:9.51,title:茶馆,actors:于是之,郑榕,蓝天野,英若诚,黄宗洛,

rating:9.39,title:巴黎圣母院,actors:海伦娜·赛加拉,加劳,丹尼尔·拉沃伊,

rating:9.43,title:罗密欧与朱丽叶,actors:达米安·萨格,希西莉亚·卡拉,

rating:9.50,title:盗梦空间,actors:莱昂纳多·迪卡普里奥,约瑟夫·高登-莱维特,

rating:9.63,title:千与千寻,actors:柊瑠美,入野自由,夏木真理,菅原文太"""

# 定义正则表达式:匹配电影名称/评分

t="title:(.+?)," #定义正则表达式匹配电影名称

r="rating:(  )," #定义正则表达式匹配电影评分。补充代码

pt=re.compile(t) #预编译正则表达式t

pr=(           ) #补充代码

# 匹配结果

dt=pt.findall(a)

dr=pr.findall(a)

n=len(dt)

a=[(    ) for k in range(n)] #将匹配结果按(名称,评分)组成列表。补充代码

a.sort(key=lambda x:float(       ),reverse=1) #按评分降序。补充代码

#显示前五名

print("排名\t影片\t\t评分")

for i in range(5):

    print(f"{i+1}\t{a[i][0]}\t{a[i][1]}")


任务2:注册信息认证

1、下面代码可认证注册信息。请将代码补充完整。

2、程序保存到s13B.py。

import re

def checkuser(uid,pwd,phone):#检查账号uid、密码pwd和手机号码的有效性

    # 账号长度为6~10个字符。包含汉字、大小写字母、和下划线。

    ruid=re.compile(r"^[\u4E00-\u9FA5A-Za-z0-9_]{    }$") #补充代码

    # 密码长度为6~10个字符必须以字母开头,包含字母数字下划线

    rpwd=re.compile(r"^[a-zA-Z]\w{     }$") #补充代码

    # 手机号码号段:130-139;145,147;150-153,155-159;176,178;182-189

    rph=re.compile(r"^1(3\d|45|47|5[012356789]|7[68]|8[2-9])\d{  }$") #补充代码

    if ruid.findall(uid):

        if rpwd.findall(pwd):

            (              ):return 1 #补充代码

    return 0

uid=input("输入账号:")

pwd=input("输入密码:")

phone=input("输入手机号码:")

if checkuser(uid,pwd,phone):print("OK")

else:print("ERROR")


任务3:邮箱有效性检测

    假定邮箱格式为:A@B.C。其中:

1、A为6至19个数字或英文字母组成。

2、B为2至13个数字或英文字母组成。

3、C只能是com、cn或net

    编写函数checkmail(mail)完成对邮箱有效性检测。邮箱有效返回1,否则返回0。并使用以下代码对函数进行调试。程序保存到s13C.py。

s=input("输入一个邮箱:")

if checkmail(s):print("OK")

else:print("ERROR")