python 自学总结

# 这是一个代码的注释

注释可以使用# 一般而言#号后面要加空格表示规范,多行注释使用“”“    ”“”符合包裹

# type()这个是判断变量类型
# 变量的形式 meny = 50
# 自己定义叫标识符 不可以使用关键字 不可以用字母开头 规范性 下划线命名法 英文字母全部小写
"""
运算符 + - *乘 / 除 //取整除  % 取余数 ** 幂
字符串的定义: name = "这是一个字符串"
字符串的定义: name2 = """这是一个字符串"""
字符串的定义: name = '这是一个字符串'
"""
# 在字符串内 包含双引号
name3 = "'这是一个字符串'"
# 在字符串内 包含单引号
name4 = '"这是一个字符串"'
# 在字符串内 解除引号效果
# 在字符串内 解除引号效果
name5 = "\"这是一个字符串"
# 字符串的拼接可以在两个字符串的中间用 + 号,但只能用于字符串之间的连接
name6 = "你好"
name7 = "世界"
print(name6 + name7)
# 字符串格式化 %s %表示我要占位了 s 表示将变量变成字符串放入占位的地方
class_num = 57
arr2 = 100000
message = "%s" % arr2
message2 = "%d" % class_num
print("这个一个实验:%s%s" % (class_num, message))
# %d 将内容转换成整形,放入占位位置
# %f 将内容转换成浮点,放入占位位置
# %s 将内容转换字符串,放入占位位置
# 数字精度控制 m.n m是控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效 .n是控制小数点精度,要求是数字,会进行小数的四舍五入
"""
%5d 表示将整数的宽度控制在5位,如数字11被设置为5d,就会变成【空格】【空格】【空格】11,用
三个空格补充宽度,如果是11,253被设置为%5.1f,则输出为【空格】【空格】11.3,四舍五入进一保留一位小数
.4f则是不限制宽度 
"""
# 可以使用f"内容{变量}"这种形式快速来实现格式化(不限数据类型,不做精度度控制)
# 对于上述表达方式可以使用表达式进行使用2
print("%d",{1 + 1})
print(f"{1 + 1}")
print("%d"% (1 + 1))
# input() 数据输入 使用案例 name = input() input 一般值是字符串 有需求可以进行数据转换 比如 int(input())
# ture 是 真 数字记作1 false 是 假 数字记作0
# 比较运算符  == != < > <= >=
# if 要判断的条件:
#     条件成立时,要做的事情(y有四个空格缩进)
"""
age = int(input("你成年了吗?"))
if age >= 18:print("可以进入了!")
print("程序结束")
"""
# if else: 如果···· 否则····
"""
age = int(input("你成年了吗?"))
if age >= 18:print("可以进入了!")
else:print("程序结束")
"""
# if elif else 多条件判断 (判断是互斥有序的,上一个满足后下一个就不会判断了)
"""
if int(input(print("请输入你猜的数字:1~10"))) == 10:print("对了")
elif int(input(print("请输入你猜的数字:1~10"))) == 10:print("对了")
else:print("游戏结束了")
"""
# if 进行判断嵌套(缩进满足要求即可)
#生成一个随机的数字
""""
import random
num = random.randint(1,10)
# 不换行 end='' 举例 print("  ",end='')
# \t 效果相当于tab建
"""
i = 1while i <= 9:j = 1while j <= i:print(f"{i} * {j} = {i * j}\t", end='')j += 1print(" ")i += 1
"""
# for 循环 for 临时变量 in 带处理数据集
"""
num = 0
name01 = "这个是一个字符串"
for x in name01:if x == 'g':num += 1
print(num)
"""
# range 获得一个数字序列 range(5) == [0,1,2,3,4]
# range(num1,num2,step) => 获得一个从怒骂 到num2 的数字序列 step是子长,也就是一次加几,默认是1 ,不包含num2本身
"""
num = 0
for x in range(1,100):if x % 2 == 0:num += 1
print(num)
for i in range(1,10):for j in range(1,i+1):print(f"{j}*{i}={i*j}\t",end='')print(" ")
"""
# continue 中断本次循环,直接进入下一次循环
# break 直接结束所在循环
"""
money1  = 10000
for x in range(1,21):import randomnum = random.randint(1, 10)if num >= 5:money1 -= 1000print(f"你是{x}号,你的绩效是{num},达到标准,可以进行领工资,剩余{money1}")if money1 <= 0:print("公司没有钱了")break else:print(f"你是{x}号,你的绩效是{num},没有达到标准,不可以进行领工资")
"""
# def my_len(data):(自定义函数)
# 调用 函数名()
"""
def 函数名(传入参数):函数体return 返回值
def add(x,y):return x + y
"""
# 函数传参 函数体 遇到return直接判定结束
# 函数返回none 则是说明返回空值 没有实际意义 none 等同于 false
# if not 条件:
# 局部变量 作用在函数体的内部
# global将局部变量修改成全局变量
# 数据容器 列表 元祖 字符串 字典 集合
# 裂变列表 变量名 = 【‘这是一个字符串’,666,true】
# index 方法 用来查看列表的下标值
# insert(下标,元素),在指定位置插入元素
# 列表【下标】=值 根据下标进行修改值
# 列表.append(元素),在列表最后追加元素
# 列表.extend(其他数据容器),在列表后面追加一批
# del 列表【下标】 列表.pop(下标)(相当于取出来,可以用变量接收) 两种删除元素方法
# 列表.remove(元素) 按顺序数,删除对应的第一个元素
# .clear() 列表清空
# 。len()  列表的元素数量
# len(列表名) 计算列表下标长度
"""
ageOfTheStudent = [21,25,21,23,22,20]
ageOfTheStudent.append(31)
ageOfTheStudent.extend([29,33,20])
arr = ageOfTheStudent.remove(21)
arr2 = ageOfTheStudent.pop(30)
arr3 = ageOfTheStudent.index(31)
"""
"""
my_list = [1,2,3,4,5,6,7,8,9,10]
arr3 = []
def my_hans():i = 0aarr = 0while aarr < len(my_list):#print(f"{ }")if aarr % 2 == 0:arr3.insert(i,my_list.pop(aarr))i += 1aarr += 1print(f"{arr3}")my_hans()
"""
# 元组 不可以修改 元祖名 = (,,,,) 空元祖定义 变量名 = tuple()
# .index 查找摸莫个元素
# .count 统计莫个元素的出现次数
# len() 计算长度
# 字符串的替换 replace(字符串1,字符串2)
# 字符串.split(分隔字符串)按照()中内容进行切分,形成一个新的 列表
# 字符串.strip()不在括号中写值,则是字符串的规整操作(去前后空格)
# 字符串.strip(字符串)则是去除前后指定的字符串,与字符串的顺序没有关系,按照单个字符
# .count 计算字符串中莫个字符出现的个数
"""
s = "itheima itcast boxuegu"
q = s.count("it")
w = s.replace(" ","I")
e = w.split("I")
print(f"{q}")
print(f"{w}")
print(f"{e}")
"""
# 序列是指:内容有序可以使用下标索引的一类数据容器
# 序列切片 从一个序列中,取出一个子序列 序列名 = 序列【开始 : 结束 : 步长(为1可以省略)】
# 步长 取元素的间隔 步长为负,反向取
"""
str1 = "万过薪月,员序程马黑来,nohyp学"
str2 = str1[::-1]
str3 = str2[8:13:]
print(f"{str3}")
"""
# 集合 不支持重复元素 顺序无法保证 不支持下标索引 集合名 = { , , ,},空集合 变量名 = set()
# 集合.add(元素) 添加元素,集合本身被修改
# 集合.remove(元素),移除元素
# 变量名 = 集合.pop() 随机取出元素
# 集合.clear 清空集合
# 集合1.difference(集合2) 取出集合1和2的差集,即1有2没有 结果是得到一个新集合
# 集合1.difference_update(集合2) 在集合1内,删除和集合2相同的元素。 集合1被修改
# 集合1.union(集合2) 将集合1和集合2合成新集合 得到一个新的集合
# 集合不能使用while 循环 可以使用for循环
"""
my_lest  = {'黑马程序员','传智教育','黑马程序员','传智教育','it','it','car','car','best'}
my_lest1 = set()
for x in my_lest:my_lest1.add(x)
print(f"{my_lest1}")
"""
# 字典的定义 同样使用{} 不过存储的元素是一个个的:键值对 比如: 变量名 = {key: value,key2: calve2....}
# 空字典 变量名 = dict()
# 字典的key 不可以重复 不支持下标索引 但是可以通过key索引 key不能是字典
# 字典【key】 = value 结果:字典被修改,元素被更新 字典key不可以重复,所以对已存在的可以执行上述操作,就是更新value的值
# 字典key不存在即是新增
# 字典.pop(key) 字典中的key被取出
# 字典.clear() 字典内容被清空
# 字典.keys() 取到字典中全部key
"""
myDictionary = {"王力宏":{"部门":"科技部","工资":3000,"级别":1},"周杰伦":{"部门":"a部","工资":5000,"级别":2},"林俊杰":{"部门":"b部","工资":2000,"级别":1},"张学友":{"部门":"a部","工资":7000,"级别":3},"刘德华":{"部门":"科技部","工资":6000,"级别":1},}
for x in myDictionary.keys():if myDictionary[x]["级别"] == 1:myDictionary[x]["级别"] += 1myDictionary[x]["工资"] += 1000
print(f"{myDictionary}")
"""
# list(容器) 将容器转化成列表 str(容器) 将容器转化成字符串
# tuple(容器) 将给定容器转换成元组
# set(容器) 将给定的容器转换成集合
# sorted() 内容进行排序,放入列表中 sorted(容器,reverse=True) 反向排序
"""
for 遍历容器
max 容器最大的元素
min() 容器内最小元素
len() 容器元素个数
list()  转换为列表
tuple() 转换为元组
str() 转换为字符串
set() 转换为集合
65 A 97 a 
重头到尾,一位位进行比较,其中一位大,后面无需比较
"""
# return 1,2 return 返回多值 x,y = 函数名 多个变量接收
# 位置传参 传递的参数和定义的参数的顺序及个数必须依照
# 关键字参数 函数调用时通过“键=值”形式传递参数 函数调用时,如果有位置参数时,位置参数必须在关键字参数的面前,但是关键字参数之间不存在先后顺序’
# 缺省传参 缺省传参也叫默认参数,用于定义函数,为函数提供默认值,函数调用时可以不传该默认参数的值 所至位置参数必须出现在默认参数前,包括函数定义和调用
# 作用:当调用函数时没有传递参数,就会使用默认参数是用缺省参数对应的值
# 不定长参数 也叫可变参数,用于不确定调用的时候会传递多少个参数(也可以不传)的场景
# 位置传递 的不定长, def 函数名(*args):  传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组的类型,这就是位置传递
# 关键字传递 的不定长 def 函数名(**kwargs): 参数是“键=值”形式的形式的情况下,所有的“键=值”都会被kwargs接受,同样会根据“键=值”组成字典
# 函数作为参数传参 函数的参数可以是一个函数
# lambda 关键字 ,可以定义匿名的函数(无名称) 在程序中一个场景只能临时使用一次 lambda 传入函数: 函数体(只能写一行代码)
# open(name,mode,encoding) name:是要打开的文件目标的字符串(可以包含文件所在的具体路径)
# mode:设计打开文件的模式(访问模式):只读,写入,追加等
# encoding: 编码格式(推荐使用utf-8)
# f =  open('l路径加文件名',‘r’,encoding="utf-8) f是函数的文件对象
# r 只读 w 原有内容会删除 文件不存在 创建新文件 a 在原有的内容后写入 文件不存在 则创建新文件
# 文件对象.read(num) num表示从文件中读取的数据的长度
# readLines() 可以按照行的方式把整个文件的内容进行一次性读取,并返回一个列表
# readLine() 一次读取一行
"""
f = open("C:/Users/jojo/Desktop/杂件/oo7.txt",'r',encoding="utf-8")
print(type(f))
"""
# f.close 关闭文件
# with open 可以通过在with open的语句中对文件进行操作 可以在操作完成后自动关闭close文件 避免忘记close的方法
"""
with open ("C:/Users/jojo/Desktop/杂件/oo7.txt","r",encoding="utf-8") as f:sum2 = 0a = 0while a <= 1000:a += 1if  f.read(1) == "a":sum2 += 1print(f"{sum2}")
"""
# f.rite("内容") 直接调用它 内容没有真正写入文件,而是进入了缓冲器中
# f.flush() 内容刷新 这个时候才是真正写入文件
# bill.txt.bak
# 移除 bug
"""
bug捕获  tey:可能会发生错误的代码except:如果出现异常执行的代码
"""
"""
捕获指定异常tey:可能会发生错误的代码except NameError as e:如果出现异常执行的代码 指定 变量名没定义
"""
"""
捕获多个异常tey:可能会发生错误的代码except (NameError ZeroDivisionError.....) as e:如果出现异常执行的代码 多个异常 可以组成一个元组
"""
"""
异常elsetey:可能会发生错误的代码except (NameError ZeroDivisionError.....) as e:如果出现异常执行的代码 多个异常 可以组成一个元组else:如果没有异常需要执行的代码
"""
"""
异常的finally tey:可能会发生错误的代码except (NameError ZeroDivisionError.....) as e:如果出现异常执行的代码 多个异常 可以组成一个元组else:如果没有异常需要执行的代码finally:(表示无论是否异常都要执行)f.close()
"""
# python模块的调用 .py结尾
# 【from 模块名】 inport【模块 | 类 | 变量 | 函数 | *】【as 别名】
# 【】 可以不选
"""
improt 模块名1,模块名2。。。。
导入模块
"""
"""
# import time 按住Ctrl 然后鼠标左键点击跳转到源文件
time.函数名
"""
# from 模块名 import 功能名
# 导入时间模块中sleep的方法 from time import sleep
# from 模块名 import * 指把模块内的所有方法都导入
# import 模块名 as 别名 指得是将模块名自定义成一个新的名字
# form 模块名 import 功能 as 别名 指的是 将 模块中方法的名称自定义为一个新的名字
# 当导入多个模块的时候,且模块内有同名功能,当调用这个同名的时候,调用到的是后面导入的模块的功能
# if __name__ == '__main__': 这个是只有当程序是直接执行的才会进入if内部 ,如果是被导入的,则if无法进入
# _all_ 如果一个模块中有_all_变量,当使用form xxx import* 导入时,只能导入这个列表中的元素
# Python包
# 必须在_init_.py中添加_all_ = [] ,控制充需导入的模块列表
# _all_ 只针对form xxx import*
# json 中转数据格式 不同语言的中转站
"""
导入json 
import json
通过 json.dumps() 转换成json 包含中文 json.dumps(容器,ensure_ascii=False) 
json.loads() 将json转换为python
"""
"""
from pyecharts.charts import Line
line = Line()
line.add_xaxis(["中国","美国","法国"])
line.add_yaxis("Gtp",[12,3,4])
line.render()
"""
# 全局设置 line.set.global_opts()
# 列表.sort(key=选择排序依据的函数,reverse=True|False)
# 参数key ,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的已依据
# 参数reverse ,是负反转排序结果,true表示降序,False是表示升序
# 设计一个类
class Student:name = Nonegender = None__ago = None # __开头可以定义一个私有的类对象,这个方法也可以定义一个私有的类方法(函数)__is_5G_enable = Trueis_5G_enable = Nonedef say_hi(self):print("nihao")
# 使用__init__方法 构建方法def __init__(self,name,gander):self.name = nameself.gender = ganderdef __str__(self):# __str__ 字符串方法 控制类转换为字符串的行为return f"{self.name},{self.gender}"def __lt__(self, other): # 大于,小于比较方法return self.gender < other.genderdef __eq__(self, other): # 相等比较return self.name == other.namedef __le__(self, other): # 大于等于 小于等于 比较return self.name == other.namedef __check_5g(self):if self.__is_5G_enable :print("5Gkaiqi")#return Trueelse:print("NO5g")#return  Falsedef Call_by_5G(self):self.__check_5g()print("nihao")
# 单继承
class Student2022(Student):# 在Student的基础上加gg = Nonedef __eq__(self, other):print("")
# 多继承 一个类。可以继承多个父类
# class 类名(父类1,父类2。。。。):
# pass 补全语法 可以用于空内容时不报错
# 如果父类的成员有同名的话,按照继承的先后顺序判定优先级
# 创建一个对象
# super() 子类中调用父类的成员
# 类型注解 : 变量:类型 列:my_int: int = 10 my_list: list = [1,2,3]
# 对形参进行注解 def add(x:int,y:int)
# 对返回值进行注解  def add(x:int,y:int) -> int:
#                    return X + y
# Union型
"""
from typing import union
my_list : list[union(int,str)] = [2,"hi"]
"""
# 多肽,指的是:多种状态,即完成摸个行为时,使用不同的对象会得到不同的结果
"""
stu_1 = Student()
stu_1.name = "wp"
stu_1.gender = "男"
"""
# 传参创建一个对象
stu_2 = Student("cgl","nv")
stu_2.Call_by_5G()

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

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

相关文章

Dbt增量策略模型实践指南

参考&#xff1a;dbt Incremental Strategies | Indicium Engineering (medium.com) 本文讨论dbt的增量策略&#xff0c;介绍工作原理、以及各自优缺点。下篇讲解如何在模型中实现增量策略。 使用增量模型可以仅仅处理最近的数据&#xff0c;减少数据处理成本和时间。当然首先要…

Solon 3.0 引入 SqlUtils :数据库操作的反朴归真

Solon 3.0 版本发布后&#xff0c;带了一个新的特性 —— SqlUtils。这一全新的数据库操作框架给开发者提供了更加透明、灵活的数据库交互方式&#xff0c;可显著提升了代码的透明度和维护性。本文将浅入探讨 SqlUtils 的引入背景、使用方法以及它对市场和开发者群体的潜在影响…

pytorch 与 pytorch lightning, pytorch geometric 各个版本之间的关系

主要参考 官方的给出的意见&#xff1b; 1. pytorch 与 pytorch lightning 各个版本之间的关系 lightning 主要可以 适配多个版本的 torch; https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrix&#xff1b; 2. pytorch 与 pytorch geometric 各…

自动化的抖音

文件命名 main.js var uiModule require("ui_module.js"); if (!auto.service) {toast("请开启无障碍服务");auto.waitFor();} var isRunning true; var swipeCount 0; var targetSwipeCount random(1, 10); var window uiModule.createUI(); uiMo…

ComfyUI | 5分钟部署最新Flux大模型

Midjourney 和 Stable Diffusion 都是目前流行的 AI 图像生成工具&#xff0c;它们能够根据文本描述生成高质量的图像。都是基于深度学习技术的文本到图像生成模型&#xff0c;但它们各自基于不同的大模型。 但最近推出了一款比前两者更强大&#xff0c;生成图像更加逼真&…

windows端口被占用但是查不到进程的问题排查

在开发环境上经常遇到端口被占用&#xff0c;但是 netstat -ano|findstr 3306 查不到进程号&#xff0c;没法强杀解决。 这种情况&#xff0c;很有可能端口被排除了&#xff0c;可用命令&#xff1a; netsh interface ipv4 show excludedportrange protocoltcp 可以看到mysql的…

前端面试题(十四)

76. 前端性能优化 前端性能优化有哪些常见方法&#xff1f; 减少 HTTP 请求&#xff1a; 合并 CSS、JavaScript 和图片文件。使用雪碧图 (Sprite) 减少图片请求数。 资源压缩和合并&#xff1a; 压缩 JavaScript 和 CSS 文件&#xff0c;减少文件体积。使用工具如 UglifyJS、…

一、制作UI自适应

当前分辨率 更改分辨率 一、原因 一款游戏的UI&#xff0c;可能会根据玩家的分辨率和屏幕尺寸&#xff0c;产生不同的变化 例如&#xff1a;某一个Image位移到了摄像机外面 因此需要通过锚点和屏幕自适应来制作完美的效果 二、解决方法 1、锚点 作用是&#xff1a;根据当…

Unity3D相关知识点总结

Unity3D使用的是笛卡尔三维坐标系&#xff0c;并且是以左手坐标系进行展示的。 1.全局坐标系&#xff08;global&#xff09; 全局坐标系描述的是游戏对象在整个世界&#xff08;场景&#xff09;中的相对于坐标原点&#xff08;0&#xff0c;0&#xff0c;0&#xff09;的位置…

前端接收到的日期格式为 2021-12-07T16:44:53.298+00:00 怎么办?

在写项目的时候&#xff0c;给前端发送了一个 Date 类型的数据,发现格式不对&#xff1a; 可以通过在application 配置文件中进行如下配置&#xff1a; spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8 前端在获取就发现格式正确

嵌入式硬件设计:从原理到实践

嵌入式硬件设计&#xff1a;从原理到实践 嵌入式硬件设计在物联网、智能设备、工业自动化等领域中扮演着至关重要的角色。随着技术的发展&#xff0c;越来越多的设备依赖于嵌入式系统进行实时控制与数据处理。本文将详细介绍嵌入式硬件设计的各个方面&#xff0c;从设计原理到…

Study-Oracle-11-ORALCE19C-ADG集群搭建

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 一、ORACLE--ADG VS ORACLE--DG的区别 1、DG是Oracle数据库的一种灾难恢复和数据保护解决方案,它通过在主数据库和一个或多个备用数据库之间实时复制数据,提供了数据的冗余备份和故障切换功能。…

实现一个时钟

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QPainter>//画家类 #include<QTime>//时间类 #include<QTimer>//定时器类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget …

项目管理——Gantt图与Pert图

目录 前言相关知识点相关题目 前言 本文是在关于软考中软件设计师中的项目管理中的知识点&#xff0c;关于Gantt图与Pert图 相关知识点 甘特&#xff08;Gantt&#xff09;图 优点 可以清晰的描述每个任务从何时开始的&#xff0c;到何时结束&#xff0c;任务的进程情况以及…

互联网协议(IP)中最常用的端口

80 端口和 443 端口是互联网协议&#xff08;IP&#xff09;中最常用的两个端口&#xff0c;分别用于 HTTP 和 HTTPS 通信。以下是它们的作用、区别以及相关背景信息&#xff1a; 80 端口和 443 端口的作用 80 端口&#xff1a; 用于 HTTP&#xff08;HyperText Transfer Prot…

C++和OpenGL实现3D游戏编程【连载14】——VBO、VAO和EBO应用

&#x1f525;C和OpenGL实现3D游戏编程【目录】 1、本节实现的内容 我们从一开始学OpenGL到现在&#xff0c;OpenGL的图形绘图必须在glBegin()和glEnd()函数之间完成&#xff0c;在此基础之上&#xff0c;才能进行后续操作功能。但是我们今天要讨论一下OpenGL图形绘制的模式&a…

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

C++面试速通宝典——23

420. 一个类有一个int和一个char有多大&#xff1f; 假设不考虑虚函数或虚继承&#xff0c;该类的大小通常由以下情况确定&#xff1a; int类型通常占用4个字节char类型占用1个字节 由于内存对齐&#xff0c;编译器可能在int和char之间或者char后面添加填充字节&#xff0c;…

error C2081: “FILE_INFO_BY_HANDLE_CLASS”: 形参表中的名 称非法

这破玩意好像是windows sdk的问题, 更新一下版本好像就可以解决. 本质是少了 #define WDK_NTDDI_VERSION NTDDI_WIN10_NI 可以在本地的config.h 或者其他文件先替它定义一下. -------------------------------------------- 如果sdk版本没问题,应该在…

使用IMX6UL定时器EPTI实现延时

上一节&#xff0c;我们讲解了如何使用Imx6uL上面的定时器EPTI&#xff0c;这一节我们将使用EPTI进行实战&#xff0c;也就是使用定时器的效果来使用延时 在之前的实验中我们都使用到了按键&#xff0c;用到按键就要处理因为机械结构带来的按键抖动问题&#xff0c;也就是按键消…