Python语言零基础入门——模块

目录

一、模块的导入与使用

1.模块的导入

2.模块的使用

二、包的使用

1.包

2.包的使用

三、常见的标准库

1.random的运用举例

2.random小游戏

(1)石头剪刀布

(2)猜大小

3.re

4.time库的使用

5.turtle库的使用

6.socket库的使用


一、模块的导入与使用

1.模块的导入

  • 模块就好比是工具包,要想使用这个工具包中的工具,就需要导入import这个模块
  • 每一个以扩展名py结尾的python源代码文件都是一个模块
  • 在模块中定义的全局变量、函数,都是模块能够提供给外界直接使用的工具

优点:提高代码的复用性

2.模块的使用

首先,新建一个Python文件my_module.py,编写内容如下:

author = '-17'
def add(a,b):return a+bdef total(*args):'''参数a:接收一个列表return a列表中每个元素的平方和'''result = 0for i in args:result = result + i**2return result

新建另一Python文件code4-30-module.py,

# 方法1
import my_moduleresult = my_module.add(3,4)
print(result)
print(my_module.author)# 方法2
from my_module import add,authorresult = add(3,4)
print(result)
print(author)# 方法3
from my_module import *result = add(3,4)
print(result)
print(author)# 用法4
from my_module import add as f  # 把add改名为fresult = f(3,4)

二、包的使用

1.包

  • 包是Python模块的一种组织形式,将多个模块组合在一起,形成一个大的Python工具库。
  • 包通常是一个拥有__init__.py文件的目录,它定义了包的属性和方法。

2.包的使用

新建一个包,并编写Python如下:

新建另一Python文件,调用包中的函数

from my_package import my_math,my_card  # 法1
from my_package import *  # 法2result = my_math.total(1,2,3)
print(result)
my_card.menu()

三、常见的标准库

模块用途
osos模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等
syssys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。
timetime 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。
datetimedatetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等
randomrandom 模块提供了生成随机数的函数,例如生成随机整数、浮点数、序列
mathmath 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。
rere模块提供了正则表达式处理函数,可以用于文本搜索、替换、分割等。
jsonjson 模块提供了JSON 编码和解码函数,可以将 Python 对象转换为JSON格式,并从JSON 格式中解析出 Python 对象。
urlliburlib 模块提供了访问网页和处理 URL的功能,包括下载文件、发送POST请求、处理cookies等。

1.random的运用举例

import random
# 随机数
a = random.random()  # 随机小数,0-1之间
print(a)
a = random.randint(1,100)  # 范围是1-100的随机整数
print(a)# 获取列表中的随机元素
list1 = [1,2,3,4,5,6]
print(list1[random.randint(0,len(list1)-1)])# 直接获取序列中的元素
print(random.choice(list1))
print(random.choice('hello'))# 获取字母的ascii
print(ord('A'),ord('Z'))# 生成一个随机字母组成的列表
a = []
n = 5
for i in range(20):s = ''for j in range(n):t = random.randint(65, 90)s += chr(t)a.append(s)
print(a)# 将列表顺序打乱
random.shuffle(list1)
print(list1)

运行结果:

0.16955544251560006
67
2
6
l
65 90
['SPYLS', 'CFBTM', 'ZYKYN', 'VTWCP', 'SSGLO', 'KMCKX', 'FTUVT', 'KLBDC', 'CLUIU', 'XHMIL', 'SARHS', 'WZPTI', 'AVEHU', 'JLIWJ', 'ETHRI', 'GELRK', 'JIFHI', 'XVOQA', 'QJBKO', 'SRQUV']
[5, 2, 4, 6, 1, 3]

2.random小游戏

(1)石头剪刀布

import randomdef game1():  # 石头剪刀布player_score,computer_score = 0,0for i in range(3):player = input('请输入石头剪刀布:')computer = random.choice(['石头','剪刀','布'])print('电脑出:',computer)if player==computer:player_score+=1computer_score+=1elif (player=='石头' and computer=='剪刀') or (player == '剪刀' and computer == '布') or (player == '布' and computer == '石头'):player_score+=1else:computer_score+=1print('玩家得分:%d,电脑得分:%d'%(player_score,computer_score))if player_score==computer_score:print('平局')elif player_score>computer_score:print('玩家赢')else:print('电脑赢')game1()

测试结果:

请输入石头剪刀布:剪刀
电脑出: 剪刀
玩家得分:1,电脑得分:1
请输入石头剪刀布:剪刀
电脑出: 布
玩家得分:2,电脑得分:1
请输入石头剪刀布:石头
电脑出: 剪刀
玩家得分:3,电脑得分:1
玩家赢

(2)猜大小

def guess_number():  # 猜数字num = random.randint(1,100)while True:player = int(input('请输入你猜的数字:'))if player==num:print('猜中了!')breakelif player>num:print('猜大了~')else:print('猜小了~')guess_number()

测试结果:

请输入你猜的数字:50
猜小了~
请输入你猜的数字:75
猜小了~
请输入你猜的数字:85
猜大了~
请输入你猜的数字:80
猜大了~
请输入你猜的数字:78
猜大了~
请输入你猜的数字:76
猜中了!

3.re

  • 正则表达式处理
  • 可以用于文本搜索、替换、分割等
模式描述
\w匹配字母数字及下划线
\W匹配非字母数字下划线
\s匹配任意空白字符,等价于[\t\n\r\f]
\S匹配任意非空字符
\d匹配任意数字,等价于[0-9]
\D匹配任意非数字
\A匹配字符串开始
\Z匹配字符串结束,如果存在换行,只匹配到换行前的结束字符串
\z匹配字符串结束

\G

匹配最后匹配完成的位置
\n匹配一个换行符
\t匹配一个制表符
^匹配字符串的开头
$匹配字符串的末尾
.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
[...]用来表示一组字符,单独列出:[amk]匹配‘a’,'m',或‘k’
[^...]不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
*匹配0个或多个的表达式
+匹配1个或多个的表达式
?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n}精确匹配n个前面表达式
{n,m}匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a|b匹配a或b
( )匹配括号内的表达式,也表示一个组
import re
result = re.match(r'\d+','12131551')
print(result)result = re.match(r'\w+','a8/')
print(result)result = re.match(r'\s+','  cy')
print(result)result = re.match(r'\s+$','  cy')
print(result)result = re.match(r'\S+','  cy')
print(result)result = re.match(r'^code\d-\d-\w+$','code9-4-re')
print(result)# []区间,可选列表
result = re.match(r'^[abcd]+$','cy')
print(result)result = re.match(r'^abc{2}$','abcc')
print(result)result = re.match(r'^a|b$','abc')
print(result)

运行结果:

<re.Match object; span=(0, 8), match='12131551'>
<re.Match object; span=(0, 2), match='a8'>
<re.Match object; span=(0, 2), match='  '>
None
None
<re.Match object; span=(0, 10), match='code9-4-re'>
None
<re.Match object; span=(0, 4), match='abcc'>
<re.Match object; span=(0, 1), match='a'>

应用举例:

# 身份证号验证
result = re.match(r'^\d{6}((20[012][01234])|(1[89]\d\d))\d{7}(\d|X)$','12345620001234567X')
print(result)# 手机号验证
result = re.match(r'^1\d{10}$','12345678912')
print(result)

运行结果:

<re.Match object; span=(0, 18), match='12345620001234567X'>
<re.Match object; span=(0, 11), match='12345678912'>

4.time库的使用

import time
t = time.time()  # 时间戳:从1970年开始到现在为止,过了几秒
print(t)t = time.localtime()  # 结构化的时间
print(t)
print(t.tm_year,type(t.tm_year))s = time.strftime('%Y-%m-%d %H:%M:%S',t)  # %H:小时,%M:分钟,%S:秒
print(s)

运行结果:

1714567275.1523554
time.struct_time(tm_year=2024, tm_mon=5, tm_mday=1, tm_hour=20, tm_min=41, tm_sec=15, tm_wday=2, tm_yday=122, tm_isdst=0)
2024 <class 'int'>
2024-05-01 20:41:15

5.turtle库的使用

例1:

import turtle
pen = turtle.Turtle()
pen.speed(0)
for i in range(100):pen.forward(100+i)pen.right(61)
input()

运行结果:

例2:数字时钟

import turtle,time
from my_package import my_tools
pen = turtle.Turtle()
pen.backward(200)
pen.speed(0)while True:time.sleep(1)times = my_tools.get_time()pen.clear()pen.write(times,font=("Arial",40,"normal"))input()

运行结果:

6.socket库的使用

新建一个Python文件“server.py”,代码如下:

import socket
# 创建socket对象
sk = socket.socket()
# 绑定IP和端口号
sk.bind(("0.0.0.0",8995))
# 设置监听
sk.listen(5)
# 等待客户端连接
conn,addr = sk.accept()print(conn)
print(addr)while True:accept_data = conn.recv(1024)print('收到客户端发送的消息:',accept_data.decode('utf8'))send_data = '收到!'conn.send(send_data.encode('utf8'))

新建一个Python文件“client.py”,代码如下:

import socket# 创建socket对象
sk = socket.socket()
# 连接服务器
sk.connect(("127.0.0.1",8995))while True:send_data = input('请输入你要发送的内容:')# 发送数据到服务器sk.send(send_data.encode('utf8'))# 等待服务器的响应accept_data = sk.recv(1024)# 打印服务器的响应print('接收到服务器的响应:',accept_data.decode('utf8'))

先运行server.py文件,再运行client.py文件,否则会报错,运行结果如下:

client客户端:

请输入你要发送的内容:hello -17
接收到服务器的响应: 收到!
请输入你要发送的内容:你好
接收到服务器的响应: 收到!

server服务器:

收到客户端发送的消息: hello -17
收到客户端发送的消息: 你好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手实现一个简约酷美美的版权声明模块

1. 导语 版权声明在很多网站都有用到&#xff0c;出场率还是很高的。所以今天就实现一个属于自己分风格的版权声明模块&#xff0c;技术上采用原生的前端三剑客: HTMLCSSJavaScript(可能会用到) 比如CSDN的版权声明是这样的 2. 需求分析 先看看成品吧&#xff0c;这篇文字结…

Access to image at ... from origin ... has been blocked

Access to image at ‘http://127.0.0.1:3000/api/getImg?url/uploads/file/20240421/file-1713715007811-logo.png’ from origin ‘http://ggbol.gnway.cc’ has been blocked by CORS policy: The request client is not a secure context and the resource is in more-pri…

【C++】---模板进阶

【C】---模板进阶 一、模版参数1、类型参数2、非类型参数 二、模板的特化1、函数模板的特化2、类模板特化&#xff08;1&#xff09;全特化&#xff08;2&#xff09;偏特化 三、模板分离编译1、模板支持分离编译吗&#xff1f;2、为什么模板不支持分离编译&#xff1f;3、如何…

google search API 获取

登录谷歌云启动服务 首先登录谷歌云Google Cloud: https://console.cloud.google.com/&#xff0c;登录后创建一个项目。 选择创建的项目&#xff0c;进入API库。搜索Google Search。 选择custom Search API并启用。 此外&#xff0c;有个非常具有类似的API-- Google Search …

3D建模在游戏行业的演变和影响

多年来&#xff0c;游戏行业经历了显着的转变&#xff0c;这主要是由技术进步推动的。 深刻影响现代游戏的关键创新之一是 3D 建模领域。 从像素化精灵时代到我们今天探索的错综复杂的游戏世界&#xff0c;3D 建模已成为游戏开发不可或缺的基石。 本文讨论 3D 建模在游戏行业中…

PyVista 3D数据可视化 Python 库 一行代码实现裁剪 含源码

简介&#xff1a; Pyvista是一个用于科学可视化和分析的Python库,使3D数据可视化变得更加简单和易用&#xff1b; 只增加一行代码就可以实现裁剪&#xff1b; 1.效果&#xff1a; 2.代码如下&#xff1a; 加载模型数据&#xff1a; 代码实现&#xff1a; import pyvista a…

查找算法之二分查找

一、算法介绍 二分查找&#xff0c;也称为折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。对于包含 n 个元素的有序数组&#xff0c;二分查找的步骤如下&#xff1a; 确定搜索范围&#xff1a;首先&#xff0c;将要查找的元素与数组中间的元素进行比较。如果…

引领农业新质生产力,鸿道(Intewell®)操作系统助力农业机器人创新发展

4月27日至29日&#xff0c;2024耒耜国际会议在江苏大学召开。科东软件作为特邀嘉宾出席此次盛会&#xff0c;并为江苏大学-科东软件“农业机器人操作系统”联合实验室揭牌。 校企联合实验室揭牌 在开幕式上&#xff0c;江苏大学、科东软件、上交碳中和动力研究院、遨博智能研究…

查看笔记本电池容量/健康状态

1. 打开命令行提示符 快捷键“win R”后输入“cmd” 2. 在命令提示符中输入命令 “powercfg /batteryreport" 并回车 3. 查看文件 最后就可以看到笔记本的电池使用报告了

高效率的做事方法?

高效率的做事方法可以帮助我们更好地管理时间和资源&#xff0c;以下是一些建议&#xff1a; 1.明确目标和计划&#xff1a; 在开始任何任务之前&#xff0c;先明确你的目标是什么。 制定一个详细的计划&#xff0c;包括步骤、时间表和预期结果。 将任务分解成小块&#xff0…

第11章 数据库技术(第一部分)

一、数据库技术术语 &#xff08;一&#xff09;术语 1、数据 数据描述事物的符号描述一个对象所用的标识&#xff0c;可以文字、图形、图像、语言等等 2、信息 现实世界对事物状态变化的反馈。可感知、可存储、可加工、可再生。数据是信息的表现形式和载体&#xff0c;信…

python实现的基于单向循环链表插入排序

相比于定义一个循环双向链表来实现插入排序来说&#xff0c;下面的实现采用一个单向循环链表来实现&#xff0c;并且不需要定义一个单向循环链表类&#xff0c;而是把一个list&#xff08;数组/顺序表&#xff09;当成单向循环链表来用&#xff0c;list的元素是一个包含两个元素…

【Windows,亲测有效】手动激活Sublime Text

前言 Sublime Text 是一款非常好用的文本编辑器&#xff0c;但是免费版时不时会跳弹窗 本方法无毒无害&#xff0c;简单易上手 2023/12/22 更新&#xff1a;实测从 4143 支持到 4169 开始 先确保你用的是官方版本的 Sublime Text&#xff0c;还没下的可以去官方下载&#…

net lambda 、 匿名函数 以及集合(实现IEnumerable的 如数组 、list等)

匿名函数&#xff1a;》》》 Action a1 delegate(int i) { Console.WriteLine(i); }; Lambda:>>> Aciont a1 (int i) > { Console.WriteLine(i); }; 可以简写 &#xff08;编译器会自动根据委托类型 推断&#xff09; Action a1 &#xff08;i&#xff09;> {…

笔记本无线网络共享给有线使用

1.鼠标右击wifi图标选择打开网络和Internet设置 2.选择WLAN项&#xff0c;点击进入更改适配器选项 3.进入到以下界面&#xff0c;右击以太网选择启动&#xff08;不确定的话可以在设备管理器查看网卡&#xff09; 4.右击WLAN选项&#xff0c;点击属性 5.点击共享&#xff0…

esp32s3使用psram后音频播报不了的问题解决记录

idf.py menuconfig开启psram后会报错 提示需要打补丁&#xff1a; 根据提示切换到IDF_PATH目录&#xff0c;然后执行git apply %ADF_PATH%/ida_patches/idf5.0_freertos.patch打补丁。 再次编译提示如下错误&#xff1a; assert failed: spi_flash_disable_interrupts_cach…

【Qt QML】Pane组件

Pane&#xff08;窗格&#xff09;提供与应用程序样式和主题匹配的背景色。窗格不提供自己的布局&#xff0c;但需要您定位其内容&#xff0c;例如通过创建RowLayout或ColumnLayout。 声明为窗格的子项的项自动成为窗格的contentItem的父项。动态创建的项需要显式地添加到conte…

VSCode 配置 CMake

VSCode 配置 C/C 环境的详细过程可参考&#xff1a;VSCode 配置 C/C 环境 1 配置C/C编译环境 方案一 如果是在Windows&#xff0c;需要安装 MingW&#xff0c;可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。 注意安装路径不要出现中文。 打开 windows…

06 - 步骤 add constants

简介 Add Constants 步骤是用于在数据流中添加常量字段的步骤。它允许用户在数据流中插入一个或多个常量字段&#xff0c;并为这些字段指定固定的数值、字符串或其他类型的常量值。 使用 场景 我需要在数据清后&#xff0c;这个JSON 字符串有一个固定的行流数据。 1、拖拽…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展&#xff0c;数字旅游作为旅游业与科技融合的新兴业态&#xff0c;正以其独特的魅力和优势&#xff0c;引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态&#xff0c;更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…