Python高级简单练习

1、试根据下面代码框架提示在横线处补全爬取http://www.haust.edu.cn网站的全代码。(请删除下划线和标号)

        import _____(1)______
        url="http://www.haust.edu.cn"
        try:
            r = _____(2)______
            _____(3)______
            r.encoding = _____(4)______
            print(r.text[:1000])
        except:
            print("爬取失败")

答案:
(1)requests
(2)requestsr=requests.get(url)
(3)r.raise_for_status()
(4)r.apparent_encoding

2、根据以下操作写出结果:(请删除下划线和编号)

        In [1]: import pandas as pd
        In [2]: b = pd.Series([9,8,7,6],['a','b','c','d'])
        In [3]: b['b']
        Out[3]: ___(1)____
        In [4]: 'c' in b
        Out[4]: ___(2)____
        In [5]: 0 in b
        Out[5]: ___(3)____
        In [6]: b.get('f',100)
        Out[6]: ___(4)____
        In [7]: b.drop(['a','b','c'])
        Out[7]: 
        ___(5)____
        dtype: int64 

答案:
8
True
False
100
d 6

3、简述一下NumPy库的特点?

        答案:

        NumPy是一个开源的Python科学计算基础库,包含:
		一个强大的N维数组对象	ndarray
		广播功能函数
		整合C/C++/Fortran代码的工具
		线性代数、傅里叶变换、随机数生成等功能

NumPy是SciPy、Pandas等数据处理或科学计算库的基础

4、Python已有列表类型,为什么需要一个数组对象(类型)?

        答案:
        数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据设置专门的数组对象,经过优化,可以提升这类应用的运算速度观察:科学计算中,一个维度所有数据的类型往往相同数组对象采用相同的数据类型,有助于节省运算和存储空间

5、Matplotlib库和matplotlib.pyplot库有什么区别?

       答案:
        Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式

6、DataFrame类型可以由哪些类型创建?

  1. 二维ndarray对象
  2. 由一维ndarray、列表、字典、元组或Series构成的字典
  3. Series类型
  4. 其他的DataFrame类型

7、请根据提示完成Pygame的最小开发框架:

        1. #  Pygame Hello World Game
        2. import pygame,sys
        3.  
        4. pygame.init()
        5. screen = pygame.display.set_mode((600, 400))
        6. pygame.display.set_caption("Pygame游戏之旅")
        7.  
        8. ______(1)_______
        9.     ___________(2)____________
        10.          ___________(3)____________
        11.              ____(4)____
        12.      _______(5)________

答案:
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
pygame.display.update()

### Python 高级正则表达式练习教程 #### 使用命名捕获组 在编写复杂的正则表达式时,使用编号的捕获组可能会变得难以管理。因此,Python 的 `re` 模块允许创建带有名称的捕获组,这使得代码更具可读性和维护性。 ```python import re text = "Contact: John Doe, Email: john.doe@example.com" pattern = r"Contact:\s*(?P<name>[A-Za-z\s]+),\s*Email:\s*(?P<email>[\w\.]+@[\w]+\.[a-zA-Z]{2,})" match = re.search(pattern, text) if match: name = match.group('name') email = match.group('email') print(f'Name: {name}, Email: {email}') ``` 此段代码利用了命名捕获组的功能来提取联系人的姓名和电子邮件地址[^1]。 #### 查找并替换复杂模式 除了基本的查找功能外,还可以执行基于正则表达式的字符串替换操作。下面的例子展示了如何将日期格式从 “dd-mm-yyyy” 转换为 “yyyy/mm/dd”。 ```python date_string = 'Today is 15-07-2023' new_format = re.sub(r'(\d{2})-(\d{2})-(\d{4})', '\\g<3>/\\g<1>/\\g<2>', date_string) print(new_format) # 输出 Today is 2023/15/07 ``` 这段程序说明了怎样运用子模式引用来进行灵活的数据转换。 #### 理多行输入 当理包含多个段落或多行文本的时候,可以启用多行模式 (`re.M`) 来让 `^` 和 `$` 匹配每一行而不是整个字符串的起始位置与结束位置。 ```python multi_line_text = """First line. Second line.""" matches = re.finditer(r'^.*$', multi_line_text, flags=re.MULTILINE | re.UNICODE) for m in matches: print(m.group()) ``` 上述脚本会逐行打印出所有的匹配项,即使它们位于不同的物理行内。 #### 编写不区分大小写的查询 虽然默认情况下正则表达式是区分大小写的,但是可以通过传递标志参数给各种方法来改变这一行为。例如,在搜索时不考虑字母大小写: ```python case_insensitive_pattern = re.compile('PYTHON', re.IGNORECASE) result = case_insensitive_pattern.match('python') != None print(result) # True ``` 这里展示了一个忽略大小写的简单实例,其中编译后的正则对象可以在后续多次调用中重用以提高效率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr顺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值