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

news2025/1/13 13:56:47

目录

目标

模块

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自带的,具有较高的通用性。

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

总结

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

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

相关文章

Redis---------实现商品秒杀业务,包括唯一ID,超卖问题,分布式锁

订单ID必须是唯一 唯一ID构成: 代码生成唯一ID: import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.tim…

2024年IEEE第16届先进信息通信技术国际会议(ICAIT 2024)即将召开!

2024年IEEE第16届先进信息通信技术国际会议(ICAIT 2024)将于2024年 8月16-19日在湖北恩施举行。先进信息通信技术作为当今世界科技发展的前沿领域,不仅是推动经济社会发展的重要引擎,也是提升国家综合竞争力的重要支撑。因此&…

EDA(一)Verilog

EDA(一)Verilog Verilog是一种用于电子系统设计自动化(EDA)的硬件描述语言(HDL),主要用于设计和模拟电子系统,特别是在集成电路(IC)和印刷电路板(…

AI-数学-高中53-离散型随机变量的均值与方差

原作者视频:【随机变量】【一数辞典】3离散型随机变量的均值与方差_哔哩哔哩_bilibili 标准差 方差开根

算法数据结构--单调栈

文章目录 介绍单调递增栈单调递减栈图示应用场景 步骤模板Deque用法例题[739. 每日温度](https://leetcode.cn/problems/daily-temperatures/)[496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) 总结 介绍 单调栈是一种特殊的栈数据结构&#x…

Excel中怎样把单元格里的数据拆分成多行?

时常会遇到这种情况,需要将一个单元格里的数据分拆到多行,可以使用公式,这里演示使用基础操作的办法。 按照excel使用经验,可以复制数据,粘贴到MS Word里,这个是excel的同族软件,兼容性好。 在…

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言:Java 使用框架: SSM(Spring SpringMVC Myba…

基于 AI 的数据库助手-Chat2DB

序言 现在已经开始步入 AI 时代,AI 产品也已经络绎不绝。今天,给大家介绍一款数据库的 AI 产品 —— Chat2DB。 一、什么是 Chat2DB Chat2DB 由阿里提供的一个数据库管理、数据开发、数据分析的工具,它是一个 AI 原生的数据库管理工具&…

STM32数字示波器+详细注释+上位机程序+硬件

目录 1、设计指标: 2、功能: 3、上位机的程序 ​4、测试的照片 5、PCB 6、模拟电路板 7、程序 资料下载地址:STM32数字示波器详细注释上位机程序硬件 1、设计指标: 主控: STM32…

2022 亚马逊云科技中国峰会,对话开发者论坛

目录 前言 最近整理资料发现还有一些前 2 年的内容没发出来,故补发记录,每年都有新的感悟。 开发者论坛 1. 你认为什么是开发者社区,如何定义一个成功的开发者社区? 我认为可以把开发者社区看成一个 “产品” 来对待&#xff…

大功率双向直流电源的输出电压和电流

双向直流电源(Bidirectional DC Power Supply)是一种具有双向输出电能的直流电源。与传统的直流电源相比,双向直流电源在输出电能的同时,还具备一定的电流输入能力,从而使其应用范围更加广泛。大功率双向直流电源作为电…

n-Track Studio Suite for Mac激活版:打造您的专属音频工作室

n-Track Studio Suite for Mac是一款功能强大的数字音频工作站软件,让您在家中就能享受到专业录音棚的待遇。无论是录制人声、乐器还是MIDI序列,都能轻松应对。 n-Track Studio Suite for Mac激活版下载 这款软件拥有实时音高校准、时间拉伸和自动补足功…

Java项目:基于SSM框架实现的学院党员管理系统高校党员管理系统(ssm+B/S架构+源码+数据库+毕业论文+开题)

一、项目简介 本项目是一套基于SSM框架实现的学院党员管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐…

机器学习:深入解析SVM的核心概念【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂,所以导师直接推荐我阅读周志华的《西瓜书》!!然后仔细阅读其中的第六章:支持向量机 间隔与支持向量 **问题一:什么叫法向量?为什么是叫法向量**什么是法向量?…

OpenCV如何模板匹配(59)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何实现背投(58) 下一篇 :OpenCV在图像中寻找轮廓(60) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 matchTemplate()搜索图像贴片和输入…

C语言 | Leetcode C语言题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; char* getPermutation(int n, int k) {int factorial[n];factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;char* ans malloc(n 1);ans[n] \0;int valid[n 1];for (int i 0; i < n; i) {val…

OpenWRT部署Zerotier虚拟局域网实现内网穿透

前言 细心的小伙伴肯定已经发现了&#xff1a;电脑上部署了Zerotier&#xff0c;如果路由器也部署了OpenWRT&#xff0c;那是否能远程访问呢&#xff1f; 答案是肯定的。 OpenWRT部署Zerotier有啥好处&#xff1f; 那好处必须多&#xff0c;其中的一个便是在外远程控制家里…

【UnityRPG游戏制作】NPC交互逻辑、动玩法

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

Oracle 数据库全面升级为 23ai

从 11g 到 12c 再到 19c&#xff0c;今天&#xff0c;我们迎来了 23ai &#xff01; “ Oracle AI Vector Search allows documents, images, and relational data that are stored in mission-critical databases to be easily searched based on their conceptual content Ge…

算法打卡day40

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