【Python编程实践1/3】模块

目录

目标

模块

import

​编辑

代码小结

题目

from...import

随机模块

代码小结

randint函数

骰子大战

choice函数

总结


目标

        拧一颗螺丝,只会用到螺丝刀;但是修一台汽车,需要一整套汽修的工具。函数就像螺丝刀,可以帮助我们解决一类问题。那么当我们遇到很多问题时,难道要东拼西凑各种函数来解决吗?

        其实,对于很多有关联的问题,Python已经提供了标准的解决方案。这些解决方案,都被封装在了一个叫做模块的东西里面。今天,我们先来了解模块的两种导入方式,并介绍一些常见模块的使用方法

模块

        简单来说,函数是对代码的封装;类是对属性和方法的封装。而模块,则可以看成是一堆函数、类和一些代码封装而成的。

        定义:模块是已经写好的Python文件,以.py结尾。模块可以包含函数、类和一些代码,它们之间的功能是相互关联的。

        隐喻:如果把模块比作工具箱,那么函数、类就是里面的螺丝刀、锤子等工具

        Python中的模块,大致分为内置模块(安装Python时自带的模块)第三方模块(有其他开发者所编写,提供给公众免费使用的模块)和自定义模块三种。而我们将主要学习前面两种模块。

        今天,我们以内置模块为例,来讲解模块的基本知识。

        无论是什么模块,都需要先导入再使用。模块有常用的两种导入方式:import

from…import。下面,我们来学习这两种导入方式之间的差异。

import

        前面,我们把模块比作了工具箱,里面有很多函数和类的工具。那么,使用关键词import直接导入模块,就相当于我们导入了整个工具箱。

导入datetime模块,使用模块中的类datetime的now()方法,获取了当前的日期时间。

# 导入模块 datetime
import datetime
# 使用模块datetime中的类datetime的now方法获取当前日期时间,赋值给nowTime
nowTime = datetime.datetime.now()
print(nowTime)

import

关键字import,中文意思是“导入”,表明我们要在这里导入模块。

模块名

一个名为datetime的模块,用于处理日期和时间。

模块中的类

一个类,表明我们在调用datetime模块里的datetime类。datetime类是一个日期时间类,里面提供了一些获取日期时间的方法与属性。注意,很多模块内都有和模块同名的类,注意别混淆了。

datetime类中的方法

一个方法,表明我们要调用的now()方法属于datetime类。该方法,用于获取当前的日期时间

语法格式

导入"工具箱"的缺点,就是需要先从工具箱内拿出合适的工具。因为,类属于模块,方法属于类。所以,调用模块中类的方法时,需要从大到小层层调用。采用句点表示法的格式:模块名.类名.方法名()。示例中,表示使用datetime模块datetime类now()方法。

代码小结

导入模块后,使用模块中的类的方法时,就可以使用这样的格式

        当然,我们获取了当前时间后,还能通过各种属性,来获取对应的年月日时分秒。依次使用对应的英文:year、month、day、hour、minute、second

        示例中,使用.year属性获取了当前日期的年份;使用.month属性获取了当前日期的月份。

题目

获取当前的年份

通过导入 datetime模块,使用 datetime类的now方法,获取当前日期。最后通过year属性,获取当前日期的年份,并格式化输出内容。格式化输出示例:现在是xxxx年。

参考代码

# 导入模块 datetime
import datetime
# 获取当前日期时间,赋值给nowTime
nowTime = datetime.datetime.now()
# 获取当前日期的年份,赋值给nowYear
nowYear = nowTime.year
# 格式化输出:现在是xxxx年
print(f"现在是{nowYear}年")

运行结果

from...import

        其实,在很多时候,我们很难用完工具箱的全部工具。所以,我们在处理问题前,可以先找到合适的工具,再去处理它。也就是说,对于功能强大的模块,我们只需要导入我们要使用的函数或者类就行了。

        此时,就需要用到from...import语句。

        从datetime模块中,导入了类datetime,并使用该类的now()方法,获取了当前的日期时间,并输出。

# 从模块datetime中,导入类datetime
from datetime import datetime
# 使用类datetime的now方法获取当前日期时间,赋值给nowTime
nowTime = datetime.now()
print(nowTime)

两个关键字

from...import,表示我们从模块中导入一个指定的函数或类。示例中,表示从datetime模块中,导入了datetime类。

模块名

关键字from后的datetime是模块,表示要从模块datetime中导入类或函数。

一个类

关键字import后的datetime是一个类,表示我们是从datetime模块里导入了datetime类。

语法格式

因为from...import,相当于从工具箱拿出了工具。所以,当调用模块中的类时,无需附加模块名作为前缀,直接使用类名作为前缀即可,即类名.方法名()。示例中,表示使用了datetime类的now()方法。

        也就是说,使用import导入模块,是导入整个模块,在调用时需要模块前缀。而使用from…import导入模块时,是导入模块的类或函数,在调用时可以直接使用函数或类的方法。以后,我们要使用模块时,可以根据自己的需要选择合适的导入方式。

随机模块

        前面,我们以处理日期时间的datetime模块为例,讲解了模块的两种导入方式。下面,我们再介绍一个常用的内置模块 -- 随机模块

        导入random模块,使用模块中uniform函数,生成了一个0到1随机数并输出。

# 导入模块 random
import random
# 使用模块random中的uniform函数生成随机数,并赋值给randomNum
randomNum = random.uniform(0,1)
print(randomNum)

导入模块

使用import的方式,导入整个随机模块random。

使用模块中的函数

因为导入了整个模块,所以使用其中的函数时,需要模块名作为前缀,即模块名.函数名()的格式。示例中,uniform函数用于产生指定范围随机浮点数。比如,random.uniform(0,1)表示生成0到1的随机浮点数。

代码小结

当我们要导入模块并使用模块的函数时,就可以使用这样的格式:

        random模块内不仅有生成随机浮点数的函数,还有生成随机整数,实现随机抽取等一系列函数。图中展示了random模块中这几个常用的函数。

        下面,我们再来简单介绍下randintchoice函数的用法。

randint函数

        random模块的randint函数,可以产生指定范围的随机整数。整数的范围,由randint函数中的参数决定。示例中,random.randint(1,7)表示生成1到7的随机整数,包括整数1和7。

骰子大战

通过关键字import导入random模块。

分两次使用该模块下的randint()函数,生成1到6之间的随机整数。

第一次,将结果赋值给变量player,作为玩家的点数;

第二次,将结果赋值给变量computer,作为电脑的点数。

最后通过if-elif-else语句判断玩家和电脑的输赢:

如果,player大于computer,则输出"玩家胜利,电脑弱爆了"

如果,player等于computer,则输出"平局,再来一盘"

否则,输出"电脑胜利,决战到天亮!"

参考代码

# 导入模块 random
import random
# 生成1到6的随机整数,赋值给player
player = random.randint(1,6)
# 生成1到6的随机整数,赋值给computer
computer = random.randint(1,6)

print(f"玩家丢出{player}点")
print(f"电脑丢出{computer}点")

# 通过if-elif-else语句判断玩家和电脑的输赢
if player > computer:
    print("玩家胜利,电脑弱爆了")
elif player == computer:
    print("平局,再来一盘")
else:
    print("电脑胜利,决战到天亮!")

运行结果1结果不止1种

运行结果2结果不止1种

choice函数

        random模块的choice函数,可以从序列中随机选取一个元素。示例中,random.choice(option)表示从列表option中,随机选取一个元素。

        其实,无论是内置模块,还是第三方模块,导入的方式都是一样的。今天,我们使用的内置模块,是Python自带的,具有较高的通用性。

        下次,我们将进一步学习由个人组织开发,个性化较高的第三方模块

总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go实战训练之Web Server 与路由树

Server & 路由树 Server Web 核心 对于一个 Web 框架,至少要提供三个抽象: Server:代表服务器的抽象Context:表示上下文的抽象路由树 Server 从特性上来说,至少要提供三部分功能: 生命周期控制&…

FIFO Generate IP核使用——Native读写接口信号详解

Native FIFO接口信号是用于FIFO IP核与外部电路进行通信的信号。当FIFO支持独立的写和读时钟时,这些信号可以包括标准端口和可选端口。 1 当FIFO具有独立时钟时的接口信号 当FIFO具有独立的时钟时,其接口信号会相应地有所变化。特别是关于复位信号rst…

Hibernate入门学习

目录 1、ORM思想概述 2、自定义ORM框架 3、第一个Hibernate程序开发步骤(重要) 1)下载完整包 2)创建项目,导入所需jar包 3)建立student表 4)创建和student表对应的Student实体类 5&…

postman中百度preview无法加载的解决方案

问题 在使用postman关联时,百度接口与天气接口已使用glb_city关联,但在百度接口发送请求时,发现preview无法加载 解决方案 1、进入百度 百度全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中…

基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

vue3 + ts 快速入门(全)

文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建(推荐)vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …

11个2024年热门的AI编码助手

大家好,人工智能(AI)领域的大型语言模型(LLMs)已经逐渐发展成熟,并且深入到了我们日常的工作当中。在众多AI应用中,编码助手尤为突出,是开发人员编写更高效、准确无误代码的必备辅助…

docker原理

Docker原理 在前面我们学习了Docker,接下来我们探究一下Docker的底层技术原理 Linux 命名空间(namespace)、控制组(cgroups)和 联合文件系统(UnionFS) 三大技术支撑了目前 Docker 的实现&…

STM32入门学习之DMA

1.直接存储访问DMA(Direct Memory Access):DMA传输不需要CPU的参与,直接在内存和I/O设备间开辟了一条新的数据传输通道,不仅提高数据传输的速率,还因为不需要CPU的干预,从而提高了CPU的利用率。(注:文中的资…

OpenCV如何在图像中寻找轮廓(60)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何模板匹配(59) 下一篇 :OpenCV检测凸包(61) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::findContours使用 OpenCV 函数 cv::d rawContours …

基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过…

英语语法动词和动词的虚拟语气

动词 谓语动词的三大功能:时、态、气 1、时 和 态 的组合构成了英语的 16 种时态。 2、气 表示的是动作的情感和假设。

uboot-网络配置

文章目录 一、网络简介二、修改PHY芯片地址三、删除 uboot 中 74LV595 的驱动代码1.删除宏定义,添加ENET1和ENET2复位引脚,宏定义2.删除内容如下 四、添加 I.MX6U-ALPHA 开发板网络复位引脚驱动 一、网络简介 💦I.MX6UL/ULL 内部有个以太网 …

perl:用 MIDI::Simple 生成midi文件,用 pygame 播放 mid文件

在 csdn.net 下载 strawberry-perl-5.32.1.1-64bit.zip 解压安装在 D:\Strawberry\ 运行 cpan install MIDI::Simple D:\Strawberry\c\bin\gmake.exe test -- OK Running make install for CONKLIN/MIDI-Perl-0.84.tar.gz Installing D:\Strawberry\perl\site\lib\MIDI.pm I…

算法打卡day40

今日任务: 1)139.单词拆分 2)多重背包理论基础(卡码网56携带矿石资源) 3)背包问题总结 4)复习day15 139单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) …

【数据库原理及应用】期末复习汇总高校期末真题试卷

试卷 一、填空题 1.________是位于用户与操作系统之间的一层数据管理软件。 2.数据库系统的三级模式结构是指________、________、________。 3.数据库系统的三种数据模型是________ 、________、________。 4.若关系中的某一属性组的值能唯一地标识一个元组,则…

项目管理-项目进度管理3/3

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 项目进度管理:需掌握 ITTO, 搞懂计算图,问题和解决方案。 项目进度管理6个过程,包括(口…

Qt5.15.2安装Android开发环境。

下载Java 8,不要下Java 20 jdk8 安装跟着默认走就行:C:\Program Files\Java 需要将QtCreator的sdk_definitions.json文件修改一下 “cmdline-tools;latest” 修改为 “cmdline-tools;6.0” 在一个非中文路径,建立一个android-sdk-windows空…

MATLAB 微积分

MATLAB 微积分 MATLAB提供了多种方法来解决微分和积分问题,求解任意程度的微分方程式以及计算极限。最重要的是,您可以轻松求解复杂函数的图,并通过求解原始函数及其导数来检查图上的最大值,最小值和其他文具点。 本章将讨论微…

AD中如何器件带动导线一起旋转

选中器件和导线,右键点击联合,从选中的器件生成联合 点击屏幕右上角的小齿轮(设置按钮),选择下图所示的旋转步进为45度(或其他),器件拖拽设置为Connected Tracks 之后就可以按住空格…