python学习实验报告(第六周)

一、实验目的

1. 掌握:字符串格式化方法;

2. 掌握:字符串常用操作split()、strip()、translate()等方法使用;

3. 掌握:正则表达式语法基本语法。

4. 掌握:正则表达式模块re的常用函数用法。

注:本文对re库的使用主要参考菜鸟教程一篇博客,若对re库的某些用法不理解可以参考一下或私信我

二、实验内容及结果

1. 编写代码,根据完整路径从路径中分离文件路径(只需要分离出一个路径整体即可),文件名及文件扩展名。 str1 = “D:\ \软件\ \python\ \python39\ \Tools\ \scripts\ \abitype.py”

import os

str1 = "D:\\软件\\python\\python39\\Tools\\scripts\\abitype.py"
dirname = os.path.dirname(str1)
basename = os.path.basename(str1)
filename, extension = os.path.splitext(basename)
print("文件路径为:", dirname)
print("文件名为:", filename)
print("文件扩展名为:", extension)

图片描述

2. 编写函数hanzi_count(str)统计任意字符串中汉字的个数。

def hanzi_count(str):
    count = 0
    for s in str:
        if '\u4e00' <= s <= '\u9fff':
            count += 1
    return count

string = input("请输入一个字符串:")
print("字符串汉字个数为: ", hanzi_count(string))

图片描述

3. 编写函数trans(str)实现字符串中数字转化为大写汉字。例如 "0123456789"转化为 “零壹贰叁肆伍陆柒捌玖”。

def trans(str):
    intab = "0123456789"
    outtab = "零壹贰叁肆伍陆柒捌玖"
    transtab = str.maketrans(intab, outtab)
    return str.translate(transtab)

string = input("请输入一个字符串:")
print("数字转大写汉字后的字符串为:", trans(string))

图片描述

4. 编写程序,校验键盘录入的电子邮箱是否合法,并测试。

import re

email = input("请输入一个电子邮箱:")
if re.match("\A([\w\-]+)@([\w\-]+)\.([\w]+)\Z", email):
    print("该电子邮箱合法")
else:
    print("该电子邮箱不合法")

图片描述

图片描述

5. 已知有字符串"张三 张四 王小玲 13208888123 4819599 zhangtom@126.com 676197687211@qq.com 1999-03-26 《凡人修仙传》《水浒传》", 设计正则表达式,并编写代码完成以下功能:

  • 提取其中邮箱账号
  • 提取手机号码
  • 提取小说名称
  • 提取日期
import re

def ex_email(string):
    email = re.findall("[\w\-]+@[\w\-]+\.[\w]+", string)
    if len(email) > 0:
        print("字符串中包括的邮箱帐号有:")
        for e in email:
            print(e, end=" ")
        print("\n")

def ex_mob_num(string):
    mob_num = re.findall("1[3-9]\d{9}(?:\s|$)", string)
    if len(mob_num) > 0:
        print("字符串中包括的手机号码有:")
        for m in mob_num:
            print(m, end=" ")
        print("\n")

def ex_nov_name(string):
    nov_name = re.findall("《.+》", string)
    if len(nov_name) > 0:
        print("字符串中包括的小说名称有:")
        for n in nov_name:
            print(n, end=" ")
        print("\n")

def ex_date(string):
    date = re.findall("(\d{1,4})-(0?\d|1[0-2])-(3\d|[0-2]?\d)", string)
    if len(date) > 0:
        print("字符串中包括的日期有:")
        for year, month, day in date:
            print("{}-{}-{}".format(year, month, day), end=" ")
    print("\n")

string = input("请输入一要提取的字符串:")
ex_email(string)
ex_mob_num(string)
ex_nov_name(string)
ex_date(string)

图片描述

三、实验小结

本周题型针对的是字符串的操作,虽说字符串是最基础的数据类型,但是在目前我自身在日常写代码的过程中,对其相关操作使用还是相对较少的,re库也只是在要用到时粗浅地百度一下复制其用法,就是所谓的浅尝辄止吧。经过本周的作业,我相对详细地去了解了一下re库的使用,发现其功能还是很强大的。另外对于正则表达式的使用,也有了更深刻的理解,以往听说正则表达式在很多地方都可以用,这次总算是相对系统地学习了一下。总体来说,目前对re库及正则表达式的理解使用,我还有很大进步空间,以后还需结合实际开发加深理解。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实验名称:Python万年历 实验目的:使用Python编写一个可以输出任意年份和月份的日历的程序,并学习Python的基本语法和日期时间模块的使用。 实验步骤: 1. 导入模块 在Python中要使用日期时间模块,需要先导入模块。在程序的开头使用以下代码导入日期时间模块。 ```python import datetime ``` 2. 输入年份和月份 使用`input()`函数让用户输入要查询的年份和月份。 ```python year = int(input("请输入要查询的年份:")) month = int(input("请输入要查询的月份:")) ``` 3. 获取当月第一天的星期几 使用`datetime.date()`函数获取当月第一天的日期,再使用`.weekday()`函数获取星期几。 ```python first_day = datetime.date(year, month, 1) weekday = first_day.weekday() ``` 4. 计算当月天数 使用`datetime.timedelta()`函数计算当月的天数。 ```python if month == 12: days = (datetime.date(year+1, 1, 1) - datetime.timedelta(days=1)).day else: days = (datetime.date(year, month+1, 1) - datetime.timedelta(days=1)).day ``` 5. 输出日历 使用循环输出当月的日历。 ```python print("日 一 二 三 四 五 六") for i in range(weekday): print(" ", end="") for i in range(1, days+1): if i < 10: print("", end=" ") print(i, end=" ") if (i+weekday) % 7 == 0 or i == days: print("") ``` 6. 完整代码 ```python import datetime year = int(input("请输入要查询的年份:")) month = int(input("请输入要查询的月份:")) first_day = datetime.date(year, month, 1) weekday = first_day.weekday() if month == 12: days = (datetime.date(year+1, 1, 1) - datetime.timedelta(days=1)).day else: days = (datetime.date(year, month+1, 1) - datetime.timedelta(days=1)).day print("日 一 二 三 四 五 六") for i in range(weekday): print(" ", end="") for i in range(1, days+1): if i < 10: print("", end=" ") print(i, end=" ") if (i+weekday) % 7 == 0 or i == days: print("") ``` 实验结果: 输入年份和月份,程序会输出该月的完整日历,例如输入2022年3月,输出结果如下: ``` 请输入要查询的年份:2022 请输入要查询的月份:3 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ``` 实验总结: 通过这个实验,我学习Python的基本语法和日期时间模块的使用,并且实现了一个实用的小程序。在编写代码的过程中,我也遇到了一些问题,例如计算当月天数时需要考虑闰年的情况,但是通过查找资料和思考,我最终解决了这些问题。这个实验让我更加深入地了解了Python语言,也为我今后的编程学习打下了基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值