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

news2024/11/17 19:50:09

目录

一、模块的导入与使用

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+b

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

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

# 方法1
import my_module

result = my_module.add(3,4)
print(result)
print(my_module.author)

# 方法2
from my_module import add,author

result = 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改名为f

result = f(3,4)

二、包的使用

1.包

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

2.包的使用

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

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

from my_package import my_math,my_card  # 法1
from my_package import *  # 法2

result = 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 random

def game1():  # 石头剪刀布
    player_score,computer_score = 0,0
    for i in range(3):
        player = input('请输入石头剪刀布:')
        computer = random.choice(['石头','剪刀','布'])
        print('电脑出:',computer)
        if player==computer:
            player_score+=1
            computer_score+=1
        elif (player=='石头' and computer=='剪刀') or (player == '剪刀' and computer == '布') or (player == '布' and computer == '石头'):
            player_score+=1
        else:
            computer_score+=1
        print('玩家得分:%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('猜中了!')
            break
        elif 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.coloradmin.cn/o/1637487.html

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

相关文章

Zapier 与生成式 AI 的自动化(一)

原文&#xff1a;zh.annas-archive.org/md5/057fe0c351c5365f1188d1f44806abda 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 当组织处理手动和重复性任务时&#xff0c;生产力会遇到重大问题。Zapier 处于无代码运动的前沿&#xff0c;提供了一种先进的工具&a…

【C++】详解string类

目录 简介 框架 构造 全缺省构造函数 ​编辑 传对象构造函数 拷贝构造 析构函数 容量 size() capacity&#xff08;&#xff09; empty() clear() reserve() ​编辑 resize() 遍历 检引用符号"[ ]"的重载 迭代器 begin() end() rbegin() rend(…

【竞技宝】欧冠:拜仁2比2战平皇马,金玟哉状态低迷

拜仁在欧冠半决赛首回合较量中坐镇主场跟皇马相遇,这场比赛踢得非常激烈好看。拜仁并没有在主场苟着踢,而是跟皇马打对攻,让球迷大呼过瘾。最终,拜仁与皇马激战90分钟后,以2比2比分战平。对于这样的比赛结果,大部分拜仁球迷都觉得不服气。因为,他们认为自家中卫金玟哉太差,如果…

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

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

智能健康管理子卡(ChMC/IPMC)模块,支持IPMI2.0标准通信协议,0Kbps可配置,可通过IPMI命令控制其他刀片开关电,具备故障上报、开机自检

是一款BMC子卡&#xff0c;该子卡输出1路千兆网络接口与千兆交换芯片相连,对外输出1路百兆调试网络接口&#xff0c;对外输出2路8路&#xff08;可选&#xff09;IPMB&#xff08;I2C&#xff09;接口并做隔离处理&#xff08;I2C BUFFER&#xff09;&#xff0c;支持IPMI2.0标…

【代码随想录——链表】

1.链表 什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针的意思&#…

rust疑难杂症

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备管理中心、消费管理子系统、订餐管理子系统、水控管…

Kafka介绍、安装以及操作

Kafka消息中间件 1.Kafka介绍 1.1 What is Kafka&#xff1f; 官网&#xff1a; https://kafka.apache.org/超过 80% 的财富 100 强公司信任并使用 Kafka &#xff1b;Apache Kafka 是一个开源分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成…

CentOS7安装MySQL8.3(最新版)踩坑教程

安装环境说明 项值系统版本CentOS7 &#xff08;具体是7.9&#xff0c;其他7系列版本均可&#xff09;位数X86_64&#xff0c;64位操作系统MySQL版本mysql-8.3.0-1.el7.x86_64.rpm-bundle.tar 实际操作 官网下载安装包 具体操作不记录&#xff0c;相关教程很多。 mkdir /o…

Mysql-黑马

Mysql-黑马 编写规范&#xff1a;## 一级1. 二级三级 1.Mysql概述 数据库概念mysql数据仓库 cmd启动和停止 net start mysql180 net stop mysql180备注&#xff1a;其中的mysql180是服务名 客户端连接 远程连接数据仓库 -h 主机号 -P端口号 mysql [-h 127.0.0.1] [-P 33…

YOLOv5改进之bifpn

目录 一、原理 二、代码 三、在YOLOv5中的应用 一、原理 论文链接:

Android4.4真机移植过程笔记(二)

5、盘符挂载 先定义overlay机制路径&#xff0c;后面storage_list.xml要用到&#xff1a; 在路径&#xff1a; rk3188_android4.4.1/device/rockchip/OK1000/overlay/frameworks/base/core/res/res/xml/定义好&#xff0c;注意名字要和emmc的代码片段&#xff08;往下面看&am…

大数据信用花了,一般多久能正常?

在当今数字化时代&#xff0c;大数据技术被广泛应用于各个领域&#xff0c;包括金融、电商、社交等。然而&#xff0c;随着大数据技术的普及&#xff0c;个人信用问题也日益凸显&#xff0c;其中“大数据信用花”现象尤为引人关注。那么&#xff0c;大数据信用花究竟是什么?一…

(四)小程序学习笔记——自定义组件

1、组件注册——usingComponents &#xff08;1&#xff09;全局注册&#xff1a;在app.json文件中配置 usingComponents进行注册&#xff0c;注册后可以在任意页面使用。 &#xff08;2&#xff09;局部注册&#xff0c;在页面的json文件中配置suingComponents进行注册&#…

2023 广东省大学生程序设计竞赛(部分题解)

目录 A - Programming Contest B - Base Station Construction C - Trading D - New Houses E - New but Nostalgic Problem I - Path Planning K - Peg Solitaire A - Programming Contest 签到题&#xff1a;直接模拟 直接按照题目意思模拟即可&#xff0c;为了好去…

labview强制转换的一个坑

32位整形强制转换成枚举的结果如何&#xff1f; 你以为的结果是 实际上的结果是 仔细看&#xff0c;枚举的数据类型是U16&#xff0c;"1"的数据类型是U32&#xff0c;所以转换产生了不可预期的结果。所以使用强制转换时一定要保证两个数据类型一致&#xff0c;否则…

04 - 步骤 JSON input

简介 Kettle 的 JSON Input 步骤是用于从 JSON 格式的数据源中读取数据的步骤。它允许用户指定 JSON 格式的输入数据&#xff0c;然后将其转换成 Kettle 中的行流数据&#xff0c;以供后续的数据处理、转换和加载操作使用。 使用 场景 1、拖拽到面板 2、指定JSON input 为 K…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

阿里云开源大模型开发环境搭建

ModelScope是阿里云通义千问开源的大模型开发者社区&#xff0c;本文主要描述AI大模型开发环境的搭建。 如上所示&#xff0c;安装ModelScope大模型基础库开发框架的命令行参数&#xff0c;使用清华大学提供的镜像地址 如上所示&#xff0c;在JetBrains PyCharm的项目工程终端控…