开放每日学一个小知识,今日学习 int 函数。 int 函数的作用是将指定对象转换为整数类型,可处理数字符合格式的字母串,也可指定禁止转换。 使用语法固定写法, int, x 等于零, base 等于十, x 为待转换对象, base 为禁止数,默认时禁止范围二杠三十六。注意要点是一转换浮点数时,直接截断小数部分,不四舍五入。二、 字母串需符合指定禁止格式,否则报错。下面将十秒案例展示,稍后提问。 提问执行 int 十一八会返回什么结果?知道答案的小伙伴把答案打在评论区。
粉丝2969获赞7781

type n 既然这么简单,第四天,数据类型在 type n 中有非常多的数据,有数字、小数,英文、中文。它们主要有三大类,一、整数用 inch 表示,十十八幺零八幺零零等等,主要以整数为主。 二、小数用 float 表示,带有小数点数字,如一点八,三点一,四五点二,以小数为主。 三、制服串,用 starf 表示,如 python, 校长,校长叫 python 等等。只要用引号包裹的都是制服串。最后一个就是不二字,用不二表示,通过获取的数据来判断真假。重点来了,我们看这两行代码, print 流,虽然打印出来的都是流,但是这个是不带引号的,打印出来的是数字的流,而带了引号的打印出来的是支付串的流,因为后面这个加上了引号。接着我们看这个代码,前面的流是数字,后面带了引号的流,这流是支付串, 运行的话就会出现错误。系统显示整数和支付串不能进行相加,因为它们不是相通的类型,如果要相加的话,需要进行数据转化,把它们变成相通的数据类型,在六前面加上 street 进行转化即可。所以这就是为什么要对数据进行分类。 对数据分类是编程的基础,它决定了数据可以执行哪些操作以及其他数据交互。这些数据的类型 一定要记好,因为后续很多数据匀算都需要用到这些知识。收藏好,接下来我们开始实操,今天的目标是用变量分别定义四种数据类型,并且打印出来,以及用 type 进行数据类型的查询。 好,首先我们命名 a 等于八十八,并加上指数,接着命名 b 等于三点一四小数伏洛特, c 等于学 python 制复串, d 等于两数相加,是否正确?命名好以后我们用 print 来打印一下,就能看到结果。 首先打印 a, 得到的结果就是八十八是整数 in, 再把 print 里面改成 c, 得到的就是学 python 是 制复串。然后就是的不二之判断,七十八大于六十八运行得到的判断结果就是 two。 接着我们写第二个,用 type 进行数据类型的查找,同样的我们随便进行变量的命名,命名 a、 b、 d 四个变量。然后我们输入 print type 进行查询数据类型,我们要查询 a 的 数据类型的话, 在里面输入 a 就 行。运行的到底结果就是克拉斯 float, 表明它是 float 就是 小数类型,换成 c, 运行的到底就是克拉斯斯锥就是制服串类型。 切记这张视频很重要,记不住数据的类型就会导致你后续学习数据的运算和数据的联动,学习非常困难。如果说还有什么没听懂,这里一起交流。

为什么这个在 python 里返回 false? 说些话,你本以为会是 true 吧,但 python 打印出的却是 false 等等, python 就是 连基础数学都算错了。其实并非如此, 这背后的原因很有意思,计算机存储数字的方式和人类不一样,人类用的是十进计,计算机用的是二进计。而问题的关键就在这里,有些十进计小数,比如零点一无法在二进计中被精确表示, 这就像一除以三的结果没法用实,竟计完美写出来一样。所以,当你在代码里输入零点一时,拍放实际存储的是一个近四值。 当你计算零点一加零点二时,得到的结果并不是精确的零点三,而是一个和零点三极其接近但并不相等的数。就是这微乎其微的差值,足以让这个比较硬算返回 false。 那 解决办法是什么呢?

py 函数是在 excel 中起用 python 模式的启动器,在单元格中输入等于 py, 然后按一下 tab 键确认,选择 py 函数,就可以进入 python 模式。此时单元格的编辑栏就会被转换为 python 编辑器。 py 函数有两个参数,并且都是必要参数。 参数一用来存放 python 代码,必须是静态文本。参数二用来指定 python 函数的返回类型,有两个可选值,零表示 excel 值一表示 python 对 象。 和其他 excel 函数相比, py 函数的两个参数无法被直接观测到,需要通过 formula text 函数来查看 py 函数的公式结构。 比如在上期案例中,咱们直接在一、四单元格中输入 formula text 函数,然后点选一二单元格,最后按回车键,就可以看到 py 函数的公式结构和参数。这部分就是参数一,它被一对双引号包裹起来,也就是前面提到的,参数一必须是静态文本, 这是参数二,此时是一表示 py 参数,返回的结果是 python 对 象。那什么是 python 对 象和 excel 值呢?比如在这个案例中,咱们输入 py 函数,然后点选左侧的所有员工信息,结果就会显示 data frame。 这里的 data frame 就是 一个 python 对 象,用来代表整个员工信息表。咱们点击编辑栏左侧的下拉按钮,可以看到有两个选项,然后再点击 excel 值, data frame 中的数据就会被解压释放出来, 得到的结果就是所有的员工信息。再次点击 python 对 象,所有的员工信息又被压缩到 data frame 中。总结来说, python 对 象和 excel 值是同一个结果的两种不同形态。

如果你想在拍算里让程序重复执行操作,首先你会想到什么?没错, range 函数是你应该想到的第一个工具。它的核心作用是生成一段整数系列,专门用于配合氛围循环使用,完成重复性和有序处理的任务。核心用法就三种,全程遵循左闭右开的原则。第一种 range 五默认从零开始,数到五之前结束,但不包含五本身,所以生成的是零一二三四。 第二种 range 二八表示从第一个数二开始到第二个数八结束,同样不包含八本身,最终生成二三四五六七,适用于自定义起始值的场景。第三种 range 零十二, 前两个数值分别是起点和终点,而第三个数表示不长,依次是数值每次递增或递减的间隔,这里不长为二,因此就会生成零二四六八。此外, range 通常会和 foro 循环组合使用,基本语法会这样写,首先, range 五已经准备好了零到四的数值, 然后 for 循环会依次把这五个数值赋值给 number, 执行后就会输出零一二三四。最后循环自动结束,整个过程无需手动创建列表, range 会在变例过程中按需生成数值,将两者结合,就能高效地实现重复有序的操作。

泰森全套基础入门第五天泰森运算符在泰森中进行运算,与我们数学中的运算是一样的,加减、乘除,加减的表示都是一样的。乘除在编程中分别用米号键和斜杠来表示的,取用的是百分号进行表示, 双斜杠则表示争取,四方则是用双米号进行表达。大与小于是一样的,但是大于等于,小于等于则需要在后面加上等于号。 在排式中,整数和小数相加和我们的数学是一样的,没有什么太多区别,但是它和数学一样,也是有运算符优先级的, 先算括号的内容则是密运算,然后就是乘除,最后才是加减,也是和数学一样,比如我们看这行代码 print 六十六加八十八乘以二, 那么拍生会先算乘法,再算加减,得到的结果就是二百四十二,括号二十二加三十三乘以二,得到的就是一百一十段。接着我们看支付存的运算运行,得到的结果就是小张拍生,三个学习拍生。 这个时候我们就可以看到,在支付存运算中,加法和乘法是起到了支付存拼接和多次打印的效果。那么今天的重点来了, 前面的内容我们讲过,制服穿与数字是不能加运算的,因为拍三这个是制服穿,二十是数字。这个时候杰士奇就不知道你是要打赢二十次拍三,还是把拍三和二十拼接在一起, 所以就会运行错误。如果你需要表示二十次 pi 三的话,可以用乘号,如果你要表达 pi 三二十的话,就得给二十页加上引号或者 street, 改变它的数据类型。接下来开始我们今天的练习, 第一个练习分别运用加减乘除,用 print 打印出来。二、如果你要买苹果笔记本,价格是一万八, 你每个月收入减去开销乘以四个月用 print 打印出来。三、作业用第二个练习来计算你买一套房要多久时间,房子的价格是一百五十万,用 print 打印出来。 好,首先我们输入 print, 这里派生就会先匀算八十八,除以二,再加六十六,我们运行一下, 打印出来的结果就是一百一审。接着我们做第二个,同样用 pro, 用九千收入减去四千开销,再乘以四,这里净收入需要用括号破起来, 点击运行,那么得到的结果就是一万六,很显然,一万六是比一万八小,所以你四个月是买不起的。那么第三个作业呢?赶紧上手试试。

清华大佬终于把拍森做成了动画片,存下吧,最新版六百集,学完即可就业,拿走不谢!这还学不会?我退出 it 圈!警告,本视频耗时六个月制作,制作时长五百分钟,陪你系统的学习拍森基础核心与法,这应该是目前抖音最良心全面的入门到进阶的拍森全套教程了,哪怕你是零基础也能听懂戏教程。 为了打造这套 python 课程,我系统研究了国内大量教程,发现普遍存在内容杂乱、节奏拖沓、实践不足等问题。相信大家在之前也或多或少的看过 python 的 系列视频,都整得鱼龙混杂,滥竽充数,而且很少有一步步带着您一起做,并且详细讲解某一种语法功能的教程。 所以我决定摒弃所有的花里胡哨,用最原始、最直观、最纯真的方式呈现出来,让大家最快速的吸收,并且最大程度上的活学活用。最后呢,我会给大家一个小福利,课程视频中的所有素材有搭建 python 开发环境资料包, 还有从零到一的学习计划表,几十上百记素材,电子书课件等等,只要你能想到的素材,我这里几乎都有,都会整理起来放在粉丝群留言打卡学习即可全部免费打包带走!相信我,这套拍算系统课程将会是全网最齐全最一懂的小白专用课!如果看到这里对你有帮助的话,请给 up 一个免费的赞吧,让更多想要学习拍算的小伙伴看到这个视频! 下一站上岸嗨,大家好,欢迎来到动画讲编程,看动画学 python 零基础入门!我是小曼, 今天我们要讲的是 python 的 安装与使用, python 语言是面向对象的脚本语言,有简单易学、免费开源、可移植性强等优点。 主要应用的领域有数据科学、机器学习、外部开发等技术领域,并且广泛作为编程教学语言所使用。 本节课呢,我们要学习安装并且使用 python 语言开发,在屏幕上打印出。嗨,大家好,我是小曼,从今天起我们一起学习 python 这样的程序。 首先我们来讲解 python 的 安装和运行,以六十四位的 windows 十系统为例,在 python 的 官网上找到对应的 windows 六十四位安装包, 完成下载后,运行安装包,我们选择默认的 install now 安装方式就可以了。 稍等片刻之后完成安装,点击 close 关闭安装程序。完成了 python 的 安装之后,我们新建一个文文本档,并且将文件的名字修改为 hello, 点 p y, 然后右键单机这个文件 使用 i d l e 打开就可以编辑 python 程序了。 为了将信息打印到屏幕上,我们还要学习 print 函数的使用。关于 python 的 函数我们暂时不去深究,只需要知道通过函数我们可以实现各种相应的功能。 举个例子, print 函数可以将信息在屏幕上输出打印,其中数字可以直接传入 print 后的括号内。文本需要用单引号或者是双引号把它括住,再传入 print 后的括号内, 然后通过 print 将它们输出。这里面我们要注意,这里的引号必须使用英文当中的引号。 举个例子,输出数字一二三四,开发一行代码, print 一 二三四就可以将一二三四打印到屏幕上了。 输出。今天天气真不错的时候,开发代码 print 括号单引号,今天天气真不错,就可以将这句话打印到屏幕上,这里面单引号可以替换成双引号,效果都是一样的。 在开发的工作当中,为了提升程序的可读性,并且降低后续的维护成本,需要为代码添加必要的注示,来解释和说明代码的含义。 代码注示的内容呢,会被 python 解释器所忽略,不会在执行的结果当中体现出来。 pyxon 使用井号作为单行注示的符号,从符号井号开始到换行为止,井号后面都是代码注示内容被解释器所忽略。 举个例子为代码 print, 今天天气不错,加上注示,注示写在该行代码后,以井号开始。为了阅读方便,我们也可以将注示单独写在一行当中。 在 python 当中,每一句的代码占一行,代码通过缩进来区分代码之间的层次。通常情况下呢,使用四个空格或者是一个 tab 作为一个缩进量。 这里呢,我们在后续学习的条件分支、循环函数等等,都会使用代码缩进来表示相应的代码块。举个例子,一个顺序执行的 n 行代码,代码一,代码二,一直到代码 n 写在了 n 行, 这些代码的第一个字母是需要对齐的,否则就没有办法变异通过。而在条件分支当中,为了表现代码结构,在代码二与代码三的前面需要有一个 tab 的 缩进。 回到屏幕上输出学习信息的这个问题,我们可以发现,打印的信息有三行,每次使用 print 函数打印信息的时候, print 都会在最后添加一个换行符,所以我们使用三行 print 代码来完成这个程序。 打开刚刚创建的 hello 点 p y 文件,在其中开发三行代码,第一行为 print。 hi, 大家好, 第二行是 print, 我是 小曼,第三行是 print。 从今天起,我们一起学习 python, 这三行代码的第一个字母屁都在编辑器中的第一列,互相之间对齐,代码后面有相应的注式。 完成了开发之后,选择 run 菜单当中的 run 猫轴程序,就将这三行信息打印到了屏幕上。 这里面我们要注意,我们所指的屏幕,也就是通过 python 的 显示器所显示的信息,并不是说真实意义的 windows 窗口程序。 那么到这里呢? python 的 安装与使用我们就讲完了,现在来给大家留一个课后作业,使用 print 语句在屏幕上输出一个用星号所组成的五乘以五的正方形。 好的,感谢大家观看,我们下节课再会。嗨,大家好,欢迎来到动画讲编程,看动画学 python 零基础入门我是小曼, 今天我们要讲的内容是 python 的 变量与赋值。 桌子上有两个杯子,其中一个杯子装有可乐,另一个杯子装有牛奶。那么如何将这两个杯子中的饮料进行交换呢? 基于上面的场景,我们要开发一个 python 程序,程序当中定义一号杯子和二号杯子这两个变量, 通过键盘输入一号杯子与二号杯子中的饮料,然后将交换前后两个杯子变量中存放的数据打印到屏幕上。 在完成这个任务之前,我们首先来讲解 python 变量与赋值的知识。 变量呢,我们可以理解为数据的名字或者是存放数据的地方。我们在编辑代码的时候可能会多次用到某个数据,而在程序中直接使用数据很不方便, 或者该数据含义不发生变化,但数值随程序的运行发生变化,这个时候我们就可以使用变量来指代或者是存放这条数据,从而实现相应的功能。 那么变量的命名我们需要遵守以下两个规则,一、只能由大小写字母、下划线和数字组成,第一个字母不可以是数字。二、不能与 python 语言本身使用的名称相同。 python 语言本身使用的名称被称为保留字,开发程序的时候不可以将这些保留字作为变量的名称。 python 的 保留字一共有三十三个,具体如这张图所示。 现在呢,我们来看几个具体的例子, name 下划线 name 下划线 name 九是正确的变量名,而九 name 内幕加等否是错误的变量名。因为变量不能以数字开头,不能使用除了大小写字母、数字或者是下划线以外的字母,而否是 python 语言当中的单词,也就是 python 的 保留字也不可以使用。 我们可以把变量比作一个收纳盒,这个盒子里可以放任何物品,而向盒子装东西的过程就是在为变量赋值。 变量的赋值使用等号 name 等于 python, 就是 将 python 装到名字为 name 的 盒子里,也就是将 python 赋值给 name。 回到一开始的问题,定义一号杯和二号杯这两个变量,通过键盘输入一号杯与二号杯中的饮料,然后交换两个杯子变量中的数据,并且打印 在 python 当中。类似 print 函数,使用 input 函数来实现,通过键盘输入数据,在 input 的 括号当中可以添加输入时的提示语, 通过键盘为变量输入数据的时候,可以写变量等于 input, 等号的左边为变量名,等号的右边是 input 函数。而通过 print 变量名可以直接将变量值打印出来。 比如说将可口可乐复制给变量格拉斯,我们可以直接写格拉斯等于可口可乐,也可以利用音符的函数从键盘输入数据为变量赋值。 比如说程序运行之后,打印了格拉斯的值为可口可乐,再根据提示从键盘输入牛奶,之后打印格拉斯的值,打印结果为牛奶。 为了交换两个杯子当中的饮料,只使用两个杯子是没有办法完成的, 因为我们必须要先把一个杯子腾空,才能将另外杯子当中的饮料倒到这个杯子中, 所以这个时候就需要引入第三个杯子作为交换饮料的临时杯。实际上呢,交换变量中的值也是同样的道理,需要引入一个临时变量才能完成两个变量当中数据的交换。 具体呢,我们来看 glass 一 变量代表杯子一存储可口可乐, glass 二变量代表变量杯子二存储牛奶临时杯变量。 temp 是 一个空杯子,首先通过代码 temp 等于 glass 一, 将杯子一中的可乐倒入临时杯,然后通过代码 glass 一 等于 glass 二, 将杯子二中的牛奶倒入杯子一,最后通过代码 glass 二等于 temp 将零食杯当中的可乐倒入杯子二,这样就完成了两个变量中的数据交换。 现在呢,我们来看这个问题的完整代码。首先定义变量, glass 一, glass 二代表杯子一,杯子二,通过键盘输入两个杯子中的数据。 定义变量 temp 代表临时杯,通过 print 函数打印交换前杯子一与杯子二中的数据,然后通过临时杯 temp 交换格拉斯一与格拉斯二当中的数据, 最后再打印交换后杯子一与杯子二当中的数据。为了观察杯子当中的数据的变化,交换前后都是先打印杯子一,后打印杯子二中的数据。完成开发之后运行程序, 我们可以尝试多组输入来测试程序的正确性。到这里呢, python 的 变量与赋值就讲完了,现在给大家留一个课后作业, 开发一个用户注册程序。程序中定义昵称、密码、性别这三个变量,通过音符的函数为变量赋值,最后将用户输入的信息打印到屏幕上。 好的,感谢大家的观看,我们下节课再会。嗨,大家好,欢迎来到动画学 python 零基础入门体验课。我是小曼, 今天要讲的内容是 python 负循环的概念与用法。有这样一个问题,在一个农场里,最初养了三只兔子,每隔一年兔子的数量会翻涨到原来的两倍。 那么在资源条件允许并且所有兔子都生存的条件下, n 年后兔子的数量会是多少呢? 例如,当 n 等于一时,一年后农场中会有六只兔子,当 n 等于二十,两年后,农场中会有十二只兔子。 在上面的问题当中, n 作为用户的输入程序,计算该问题的结果,并且将结果打印到屏幕。 那么在解决这个问题之前,我们首先来讲解 python 循环的知识, for 循环概念与使用。 for 循环一般用于完成指定次数的循环。打个比方,我们希望循环十次,从零打印到九,开发代码 for i in range 零,逗号十 print i, 这里 i 为循环变量,循环的范围是零到九,虽然只开发了一行 print 代码,通过负循环将该代码重复执行了十次,在屏幕上打印了零到九这十个数字。 f 循环的基本语法是 f 变量 in 集合冒号,冒号的下方是需要循环的代码。这个语法呢,我们可以理解为变量在集合中循环,循环时执行代码一,代码二等等到代码 n, 当变量完成了集合中全部元素的取值之后,循环结束。注意,根据 python 的 书写格式,循环的代码前需要有一个 tab 空白, 对比刚才的代码,变量为 i, 集合为 range 函数生成的结果,循环代码为 print i, 也就是说 i 在 range 函数的结果中循环,循环过程中打印 i 的 值。如果 i 循环了 range 函数结果中的全部元素,那么循环结束, 而 range 函数的结果是一个整数列表, range a, b 会生成 a 至 b 减一这些数字。 所以在润指零十中,变量 i 依次取值零一二三一直到九这十个数字特别需要注意的是,其中并不包括十。 最后我们来看一下负循环的流程图,负循环开始的时候,检查变量是否已完成集合中的全部元素取值, 如果没有未访问的元素了,那么循环结束,否则将下一个未访问的元素复制给变量,并且循环代码一,代码二一直到代码 n 完成之后再检查集合中的元素是否全部变例。 那么到这里呢,负循环的概念就讲完了,我们回到开始的问题,在一个农场里养了三只兔子,每隔一年兔子的数量会翻涨到原来的两倍。 n 年后兔子的数量是多少呢? 现在我们将后面每一年对应兔子的数量列出,例如,一年后有六只兔子, 两年后有十二只,三年后二十四只,等等。这里呢,六等于三乘二,十二等于三乘二乘二,二十四等于三乘二乘二乘二, 所以 n 年后有三乘二乘二乘二,也就是说,一共有 n 个二相乘,也就是三乘二的 n 次方。只兔子 使用负循环来计算 n 年后兔子的数量是多少。变量 i 循环零至 n 减,一共 n 次,每次循环兔子的数量都翻一翻,所以循环 n 次,兔子的数量就会是乘以二的 n 次方。 现在呢,我们来看完整的 python 实现代码。首先定义变量 rabbit 代表初始时兔子的数量初始化为三, 然后打印输入的提示信息,通过 input 函数从键盘输入 n 的 值,使用负循环来计算 n 年后兔子的数量是多少。 代码 rabbit 等于 rabbit 乘二,被循环了 n 次,所以兔子的数量最终翻了 n 翻,最后打印结果。程序运行时,假如通过键盘输入三,那么屏幕会打印三年后兔子的数量为二十四。 至此,负循环的概念与使用我们就讲完了,现在呢,给大家留一个课后作业,使用负循环来实现一加二加三,一直加到 n, 其中 n 需要用户从键盘输入将计算结果打印到屏幕上。好的,感谢大家的观看,我们下节课再见。嗨,大家好,欢迎来到动画讲编程,看动画学 python 零基础入门。我是小曼, 今天我们要讲的是 python 字典的概念和创建。 在水果超市中,有苹果、桃子、香蕉、梨子等等水果出售。如果已知水果价格和购买水果的数量,我们该如何编辑派送程序,计算需要支付的总金额呢? 在程序当中,我们预先设置了出售的水果和相应的价格,输入整数 n 代表要购买的水果种类、数量,然后输入 n 行水果名称和购买数量, 程序计算总价格之后输出到屏幕。如果要购买的水果,超市当中没有,那么忽略掉它,不参与计算,这样就可以了。 比如超市中出售了四种水果,相应的美金价格是苹果五元,桃子六元,香蕉三元,梨子四元,用户输入 n 等于三,然后输入要购买的三种水果和相应数量, 桃子两斤,香蕉五斤,荔枝三斤,最后输出的总价是六乘以二加三乘以五,等于二十七元。 那么在解决这个问题之前,我们先来学习 python 字典的概念和创建。 学习 python 字典,我们要先了解映涉的概念。假如有很多水果和果筐,我们把不同的水果放到不同的果筐里,那么水果和果筐就有了相互对应的映涉关系了。 而映射就是元素之间的相互对应的关系。比如将苹果、桃子、香蕉、梨子分别放到 a、 b、 c、 d 四个果框当中, 那么苹果映射了 a 框,桃子映射了 b 框,香蕉和梨子分别映射了 c 和 d 框。 再比如四种水果,我们还可以和它们的价格做映涉,苹果五元,桃子六元,香蕉三元,梨子四元。而 python 当中的字典就是表示这种映涉关系的结构。 在字典的语法格式当中,我们使用大括号将元素括起来,等号左侧是字典名,右侧是字典内容。 字典当中的多个映涉关系,我们使用逗号分隔依次排列。而逗号分隔的映涉关系当中, k 代表了映涉的键, value 代表了映涉的值。 比如水果与价格的映涉当中,苹果是 k, 五元是 y 六,可以创建这样的字典, 苹果对应五,桃子对应六,香蕉和梨子分别对应三和四,这样就有了四对 k、 y 六的映射。 现在呢,我们来看具体的代码。创建两个字典,一个代表水果与果筐名字的映射,一个代表水果与水果价格的映射。 首先我们创建水果与果筐的映设字典, container 是 字典的名字,字典当中水果是 k, 有 苹果、桃子、香蕉、梨子,果筐是 value, 有 a、 b、 c、 d, 它们之间一一对应。使用 print 语句将字典打印在屏幕当中, 如果希望单独访问字典当中的某个 k, 可以 使用字典名中括号 k 值这样的方式。比如 container 中括号桃字代表了 k, 桃字对应的值打印为 b。 在创建字典的时候,我们可以使用字典名等于大括号,或者字典名等于 dick。 创建一个空字典,在向字典当中添加键值对时,语法格式为 dick。 name 中括号 k 等于 y 六, 其中 k 表示映射的键, y 六表示元素的值。 比如使用 price 等于 dick。 创建了一个水果与价格的映设字典,通过中括号直接赋值苹果、桃子、香蕉、梨子分别对应美金五六三四元。 最后打印字典 press。 如果说某个 k 不 在字典当中,强行使用字典名中括号 k 的 方式取对应的值,就会出现运行错误。 我们可以使用关键字印配合 if 语句来判断 k 是 否在字典当中。 比如 price 字典当中存储了四种水果和对应的价格。通过 if 苹果 in price 和 if 荔枝 in price 判断苹果和荔枝是否在字典中, 然后程序就会分别输出苹果的价格和该水果不卖。如果强行访问荔枝的价格,就会出现 k arrow 的 错误。 最后呢,我们来看统计购买水果总金额的 python 代码。首先定义水果价格字典 price, 其中保存了苹果、桃子、香蕉、梨子四个水果与对应的价格。通过循环配合相应的信息,将字典中的水果和价格打印出来。 输入购买水果的种类、数量,存储到变量 n 中,设置 sum price, 存储总金额。负循环 n 次输入购买的水果名称和数量,存储至 fruit 与 name。 如果输入的水果在 price 字典当中,则将水果单价 price fruit 乘购买的数量 num 每加到 sum price 当中,最后输出总价格 sum price。 好 的到这里呢, python 字典的概念和创建我们就讲完了,接下来给大家留一个课后作业, 假如已知小明、小红、小亮三个同学的语文、数学、英语成绩如何,使用 python 字典将姓名、学科成绩作对应,并且计算谁的总分最高呢? 好的,感谢大家观看,我们下节课再会。嗨,大家好,欢迎来到动画讲编程,看动画学 python 零基础入门!我是小曼, 今天我们要讲的是 python 集合的概念与使用,有两个班的同学,班里同学们的名字可以使用字母串表示, 那么如何编辑 python 程序,找出两个班级名字相同的同学呢?而且我们要注意,同一个班级下可能会有重名的同学。 程序输入班级一与班级二同学的数量与相应数量的名字字母串。程序输出两个班重名的同学, 比方说输入一班学生数量五和五个学生的名字,然后输入二班学生数量三和三个学生的名字,最后输出重名学生比尔。 这个问题呢,我们可以使用列表来实现,比方说设置 class 二两个列表循环,便利 class 一, 其中每个元素都与 class 二当中的元素作比较,如果相同,则将该元素打印,这样就找到了两个班重名的同学。 但是虽然说上述方法很简单,但是从算法的性能角度来说,使用了两层循环,它的复杂度比较高,并且如果比尔在某个班级内出现两次,还有可能会出现结果重复的问题。 那么今天呢,我们就来学习 python 中的集合,来更好的解决上面的问题。 集合是 python 当中的内置数据结构,是一个无序的集,用来保存不重复的元素。它和字典类似,集合当中相邻元素之间用逗号分隔,整体使用大括号括起来。 相比字典集合存储的数据不是 k、 y 六对,而是基本的且不可变的数据类型,比方说整型、浮点型、字母串、圆组等。 对于可变的数据类型,比方说列表、字典集合本身集合无法存储 集合。创建可以使用内置函数 set 或者大括号,大括号中为初使的集合元素。但是我们要注意的是,如果创建空集合,需要使用 set 而不是空的大括号。因为这样呢,会默认创建一个字典。 比方说,创建集合 a, a 等于 side 创建集合 b, b 中有一、二、 abc 三个元素 打印集合 a 和 b 集合不会包括重复的元素,默认会将重复元素进行归一化。比方说,打印 c, 结果为一二。 在创建集合的时候,我们也可以将字母串、列表、元组、字典等数据类型转换为集合。比方说, a 为字母串, b 是 列表, c 是 圆组, d 是 字典,分别转为集合并打印。这里呢,我们要注意的是,字典转为集合之后,会将字典当中的 k 添加至集合 y 六就被忽略了。 另外呢,集合是无序的,所以不能用缩隐的方式访问,但是可以使用便利来访问。 比方说,使用变量 item 便利集合。 test 打印集合中的每个元素。 我们使用 are 的 方法向集合中添加元素,使用 remove 移除集合中的元素。比方说,集合 nums 等于一二三, 执行 nums add 六 nums remove 一 打印 nums, 结果就是二三、六。 集合之间可以进行运算,运算的方式类似数学,当中的集合包括求交集并集差集、交集,取两个集合,公共的元素使用符号与或者函数 intersection 并集取两集合的全部元素使用符号或或函数 union。 差集呢,取一个集合当中另一个集合没有的元素使用符号减号或函数 different。 比方说,集合 a 等于一二三四,集合 b 等于三四五六。求 a 和 b 的 交集并集差集, a 和 b 的 交集与 b 和 a 的 交集相同就是三四。 a, b 与 b, a 的 并济相同就是一二三四五六。 a 与 b 的 差距是一二, b 与 a 的 差距是五六。 那么最后呢,我们来看求两个班重名学生的代码实现。首先输入班级一的学生数量存储至那么一,初步化集合 class 一, 通过循环输入班级一学生的姓名,添加至集合 class 一。 然后呢,输入班级二的学生数量存储至 number 二,出水化集合 class 二,通过循环输入班级二学生的姓名添加至集合 class 二, 求出 class 一。 还有 class 二的交集存储至 sim。 最后将重名的同学打印。 那么到这里呢, python 的 集合我们就讲完了,接下来呢,给大家留一个课后作业修改例题当中的 python 程序 求出在班级二中出现,但没有在班级一当中出现的姓名。好的,感谢大家的观看,我们下节课再会。

pason 基础语法匿名函数 linda, 哈喽,大家好,我是晨曦木木。今天的话我想教大家 python 基础语法里面的这一个 num 的 函数在里面,那这个 num 的 函数是怎么去用的?它其实用起来的话是挺方便的,因为在数据分析里面做数据处理用的比较多。我这里的话给大家写一个案例在里面,比如说这里呢准备一个 word, 这里面是一个列表,我想对这个列表里面的数据去进行一个排序,比如说第一个是 python, 后面这里呢有一个 e 字,下面这里呢再写一个,呃, hello, word, 好, 这里的话我是准备了三个这个英语单词在里面,反正也不是英语单词呢,就是一个字母串的数据吧,它是属于列表里面的,接下来我要给它去排序的话,如果用那个代码去写的话,要写很多种,但是我通过那么大的话,一行代码就可以解决的。 有个 s, 我 要给它去进行一个排序,那这里排序的话,这里面有个 sort, 后面这里有一个,把这个 word 写到里面,后面这里有写上一个 k, 这个 k 呢是你们的一个参数,那这里我就拿到你们那个 number, 下面这里是一个 x, 后面这里我要,嗯, 拿到你们的这个数据里面的一个长度,或者说它的一个多大码,我就直接这样子去写,写完之后呢,接下来我们直接是 print 打印一下这个 s, 鼠标右键点一下运行,运行完之后呢,这里就会直接帮我们去进行一个排序,从小到大,那么这个是最小的,这个是第二,这个是第三,它都会帮我们去进行一个排序,那 我们就可以不用去写负循环在里面呢,直接是一行代码,呃,就可以解决,那么这个那么的逆变函数你学会了吗?

hello 同学们,大家好,今天我们来学习拍叉的基本使用。在学习拍叉的基本使用之前呢,我们可以先对拍叉做相关的一个设置,双击打开拍叉软件。在拍叉的欢迎界面中呢,我们可以找到自定义按钮。 在自定义界面中,我们可以对 python 的 主题语言以及它的字体大小进行相关设置。除此之外呢,我们还可以点击所有设置,在所有设置中,我们可以找到编辑器下的字体。 在此处我们可以设置 python 之后编辑文本时所用到的文本样式以及它的字体大小。设置好之后,我们点击确认即可。 接下来我们来学习拍唱母插件的安装。同样在我们的欢迎界面中,我们找到插件选项, 在这它有两个界面,一个市场界面,一个已安装界面。在市场界面中,主要是展示我们能够安装的插件有哪一些,以及我们有搜索功能,可以搜索自己需要的插件名称。 在已安装界面中,我们可以找到以前安装过的插件,并且对它进行管理。这里呢,老师给大家推荐两个插件,第一个叫做翻译插件 translation, 大家下载的时候一定要注意,我们下载的是蓝色图标的这个 translation 插件,在这我们点击蓝色图标的 translation 的 安装, 等待它安装完毕即可。安装好之后呢,我们需要重启我们的 python, 它才能够使用。在这里 translation 这个插件,它的一个作用呢就是去 翻译我们文本里面的单词,我们可以在文本中选中单词,右键点击翻译,或者我们在不知道写单词的时候写中文名称,然后右键中文名称点击翻译并且替换,它会把我们的中文名字替换成我们的英文单词。 除此之外呢,我们还有一个用的比较多的插件,叫做 indent ramble, indent rambone 这一个插件呢,它是用来展示我们 python 的 缩进的 python, 它的语法格式里面对我们的空格要求非常的严格,所以这个地方它插件给我们展示了空格的一个效果,那就更方便我们对 python 进行一个学习。 安装好后呢,我们都重启一下 python, 那么在已安装界面中呢,我们就可以找到刚刚安装好的插件,如果我们不需要用这一个插件的话,我们可以点击插件,然后在下拉框这里点击卸载。同样卸载之后呢,我们也需要重启我们的 playtime, 这样我们的插件才会正常地被卸载完成。 好,接下来我们来学习 python 项目的创建,在这里我们找到项目选项,找到新建项目,点击新建项目, 在这我们选择纯 python。 第一个输入框,它是去设置我们项目的名称,这里我给到一个 test。 第二个输入框是用来输入我们项目所储存的一个位置, 下面两个复选框,我们可以勾选第二个去创建一个欢迎脚本,用来测试我们的环境是否正常。 第三个我们要去设置我们的解释器类型,在这解释器类型呢有三种,一个是虚拟环境,一个是康达环境,一个是自定义环境。我们这里选择自定义环境,选择现有,在类型这里选择 python。 如果大家底下没有出现 python 路径的话,可以选择点击这个文件夹,在这找到我们上节课安装 python 的 位置,点击确认,点击创建即可, 这时候我们的项目就已经创建成功了,那接下来呢?我们来测试一下这个项目能不能正常运行,我们把这个段点给它取消掉,点击这个红色的圆圈右键我们的代码,点击运行。 如果出现了嗨拍唱,就代表我们这个项目的环境已经配置成功了。那么从下个视频开始,我们就正式开始对 python 代码的学习。

pai 既然这么简单,第三天 print 告诫语法在 pai print 意为打印的意思,当我们输入多个 print 打印时,就会发现输出的内容是依次排下来的, 那是因为这个有个反斜杠,恩,它的作用在代码里面是自动换行,但是会被 pai 自动隐藏起来。那如果说你想在一排展示,只需要加上一个加号就能够进行支付船。凭借 在 parent 中,逗号是可以起到空格的作用,我将内容中加上逗号进行分割,那么打印出来的内容就会有空格。我们再看这行代码后面加上了 set 等于加号,那么这个 set 是 什么意思呢? 它是用来定义逗号的,你可以用 set 等于加号来定义逗号,是加号运行得到的结果就是两个字母串的拼接。同样的,你也可以定义成别的内容,比如表情,那么运行得到的结果空格就会变成表情。除了 set 能定义逗号以外, print 中 and 可以 定义反斜杠 and, 也就是它能定义换行。我们看这两行代码运行得到的结果不会改变,如果在这里加上 and, 那 么就修改了换行,变成了 and 定义的内容。再次运行, 我们就可以看到内容进行改变了,因为指令不是换行了,所以它就会变成 and 定义的内容。如果说我们输入这样一串指令,草莓,西瓜,菠萝等等,打印出来的结果就是依次向下排列,那么这个时候我们加上 and 等于和, 那么输出的结果就变了,草莓和西瓜和菠萝。接下来我们进入练习环节, 今天我们要完成的是打印一份采购清单,在这里我们可以看到需要打印的内容,型号,价格等等,我们先输入 print 手机型号,价格等等, 依次将内容输入进去,用逗号就是空格进行分割开,同样的,我们输入第二行 print, 将上面的内容填充进去,点击上方运行,得到的结果就是清单的内容。如果说你用两个 print 打印 嫌弃太麻烦了,我们也可以用三引号进行打印,不过这个三引号它会保留你的格式并行发现和之前的内容是一样的,你还知道有什么方法吗? 接下来我们定义一下逗号的内容,在最后面这里加上 sb 就 等于笑脸,同样的,我们将这个复制加到下面这行代码 运行,我们就会发现打印出来的结果,逗号空格就被替换成了笑脸,是不是特别有趣呢?最后我们再来试试定义反斜杠, n 就是 定义换行,同样的,在最后面加上 n 的 等于分别式, 那么换行就会被替换成分别式的支付串,并且将两行代码打印成一行,我们运行看看效果很好,打印出来的结果和我们预设的一样。如果说你还有什么没听懂的,欢迎这里一起学习交流。

那么序列中的第二种数据类型叫做列表,这个列表呢,我们在学习 java 的 时候也是学过列表的, 只是 java 中的列表呢,并不是一个数据类型啊,它实际上是一个容器。那么 python 中的列表呢,是一个比较常用的结构,它也是存储一个有序的数据的,那么它也具备了我们上述所讲的序列的一些特征,比如说我们可以通过所有的形式来访问 啊,那并且的话呢,我们还可以去利用切片的方式去获取某一个区间内的列表中的元素。但是列表呢,跟字幕差有一个明显的区别,就是列表是一个可变的, 有时候我们可以去修改列表中的元素啊,或者是增加删除里面的元素,那这个呢,和我们字符串还有包括后面讲的源组是不太一样的啊,下面咱们来看一下如何去创建一个列表。那么在创建列表的时候呢,它支持有三种方式来进行创建, 那么第一种方式呢,是最常用的,就是我们通过综合号的方式来进行赋值。 好,那么第一种的话呢,我们创建一个比如说叫名字的列表,逗号啊,里面呢,我们来写名字,汤姆可以写多个,那么他会根据你写的元素个数来创建对应啊对应大小的这个数值。 那这样呢,我们就创建好了一个叫 names 的 这样的一个变量啊,它的类型呢,实际上就是一个宿主类型啊,是一个列表类型,这是我们打印一下啊,看一下它的 type 类型啊,它的类型呢,就是一个类,这个类就叫 list。 那么我们现在发现我们创建好这个内幕,这个列表里的 list 啊,里面存的都是字幕串,那么我们列表呢,它并没有明确的要求你所传递的类型得是一致的,有时候你在里面呢,可以去混合性存储, 比如说我们可以在一个列表里,那么第一个位置我去存字母串,那么第二个位置呢,我们就可以存数字,甚至说第三个位置还可以存另一个列表,把一个列表存到另一个列表里去。那这种列表呢,一般咱们叫混合模式的啊, 会叫混合类型的列表,就它里面的类型啊,有多个,当然大家在解析的时候呢,也要搞清楚了啊,它们类型不一样,那么最终解析成的数据类型方式也是不一样子的,这是我们说的第一种最常见的定义方式,就是用 这个括号的形式。中括号的形式啊,这是第一种啊,那么第二种方式呢? 它采用的模式啊,是用构造函数,那我们说了,我们所定义的数据类型,实际上本身就是一个类,那么定义它的变量相当于是把这个类做实体化。那我们就用 list 啊,这个类的构造函数 啊,利用构造函数的方式去创建啊,那我们利用构造函数去创建的时候呢,我们可以啊通过其他类型进行转化,有时候我们可以把一个 zip 转成一个 list, 或者说把一个圆组转成 list 等等等等。有时候我们通过其他的呃一些 数据类型,然后采用 list 的 函数给它做一个转化就可以了。比如说我们在这呢定义了一个 zip 串, 好,这个字串呢,我们叫 python, 那 么当它是以字串的形式去存储的,那我们就可以基于这个字串给它做成一个列表的形式,这时候我们就用 list 括号里面写 s t r, 大家注意一下,这时候呢,这两个变量存的值是一样的,都是 python 这个值,但是类型是不一样的, s t、 r 的 类型呢,是字不太类型,下面 s、 t r, list 的 类型呢,是列表的类型,所以大家注意这两个类型啊,是有明显区别的 好,只是说我这个列表的值是由 list 的 转过来的,转的时候呢,我们就利用了构造函数的方式,做成了一个这样的转化,那么还有种方式呢,我们可以还有种情况呢,我们可能是通过原组的形式啊,咱们下面会讲原组, 在这呢,先提前说一下,我们可以定一个原组,原组呢是以括号的形式,它跟列表很像,里面也可以存很多个元素,但是只说它是括号,它是个不可变的。 然后呢,我们就可以通过 list 的 这个构造函数,然后把原组转成列表啊,这是原组转成列表,上面呢是字不串转成列表 啊,这两个不太一样,那么最终得到的都是一个列表的类型,这就是我们通过构造函数啊,通过其他类型转化过来的,这是第二种方式,还有第三种方式,第三种方式呢,是一个比较特殊的,就是我们需要去构建一个重复元素的列表, 这列表里面的值啊,是某一个值重复进行的啊,那么这时候呢,我们还是利用上面,咱们曾经学过一个处理重复的运算符,我们在讲字母算的时候讲过 啊,用的是这个星号,对吧?那么这个星号呢,也可以用于我们的列表的元素重复啊,我们看怎么去用啊?这地方呢,我们用的还是这个星号,比如说咱们写一个 a list 啊,这时候呢,我们先把某一个值,比如说有一个叫呃二,把这个值呢,咱们重复五次啊,首先咱们看一下得到什么类型啊,然后咱们把它的值也打印出来, 我们说星号重复的含义意味着二啊,这个元素被重复五次,你看一下得到的,首先是一个 list, 是 一个列表,没问题,那这个列表里的值呢?就是二,重复了五次,就说里面有五个二啊,这就是星号的作用,也是可以作为重复的操作 啊,重复的操作,这是我们去啊构建列表啊,有这么三种方式啊,其中最常用的就是第一种方式, 就直接有中号啊,里面去数值就行了。那么如果说你是通过别的类型转转化过来的,无论从源组转还是从字不串转,那就用它的构造函数就可以了。第三种呢,是一种很特殊的,就是当我们需要一个重复的元素的时候,那我们直接用这个星号这种重复数据生成方式啊,就可以帮助完成这样的一个操作了。 那么我们定好列表之后,怎么去访问它啊?如何访问列表?那么列表也属于序列的一种,所以访问列表呢,当然就可以通过缩影的方式来进行访问了啊,所以主要通过缩影, 那么在列表中的缩影啊,其实跟速度就很像,大家应该会比较习惯,不像字幕差中啊,用缩影可能没那么习惯啊,那么列表中缩影就很习惯了,我们直接就输出就行了,对吧?比如说咱们输出 我们那个 names, 然后输出第一个人的名字,直接来缩影零就行了。那这个要求呢,跟咱们上面 super 要求是一样的,就千万不要出现越界的情况啊,就可以了。那么缩影呢,也是一样,它有正值和负值, 正值呢就是从左面开始取,负值呢就是从右面开始取啊,这个跟 solo 操作是一样的,同样呢,它也可以做切片,切片也是一样的,需要提供两个缩影,比如说咱们想找到 jerry 这个值,那我们直接切就行了。 那切片的开始位置呢?就是一啊,比如说咱把前两个值取到吧,汤姆和杰瑞,这时候切片呢,最开始值就是零啊,当然你可以默然不写结尾值呢就是二,这时候呢,我们得到的就是前两个值,这时候大家注意,我们得到这个值呢,还是一个列表,就切完之后啊,还是一个列表 啊,还是一个列表。切片呢,跟上面字母段切片的操作是一样的啊,有时候可以省略,可以有负值,这是我们说的切片操作 好,下面咱们就看一下不同的地方,我们说列表的话呢,它是一个可变的对象,所以我们就可以对列表这个变量进行修改,那就涉及到了我们列表的修改, 那么列表的修改呢,分为这么几种情况,第一种情况呢,就修改之前的值,对值进行修改。第二种情况呢,就是往里面追加 最佳值好。第三种情况呢,就从里面怎么删除值好, 那就是常见的三种操作,就分别往列表里去最佳值,从列表中怎么删除一些值,还有就修改它现有的值,首先我们看修改这个值,怎么修改啊?修改某一个值呢,当然你就可以直接用我们的缩影就可以了,所以直接用缩影去操作, 比如说我们修改第一个人的名字,那么大家直接缩印,然后重新给它复制就可以了。好,比如说我们修改成 tom 一, 这时咱们再打一下啊啊, 第一个就改掉了,大家看它是可以改的啊,它并没有报错,咱们前面在执行错误的时候呢,它会报错误的啊,那第二种是追加啊,追加,这个我们来看一下它的情况比较多, 那当我们进行追加的时候呢,我们提供了一些方法啊,第一种呢叫 opend, 就是 从尾部来追加啊, 那这时候呢,只能追加一个啊,那么第二种的话呢,就是同时增加多个元素,是 extend 啊,我们可以通过 extend 呢,把一个列表追加到另一个列表里去,相当于追加多个元素。 然后第三个呢是 insert, insert 是 指的是我们可以指定位置啊,那么前两个是从尾部来追加的,那你要想从中间来追加,往中间插入一个元素,那么用的是 insert 啊, clear 的 话呢,是清空的意思,就把元素的内容给它删除掉,我们来试验一下啊,这几种增加方式。 好,那首先呢,我们来算看一下,从尾部来增加啊,这时候呢,我们用的是 a p d a p d app, 然后呢我们再加一个 tom 二吧,这时候输出 tom 二会加到什么?加到张三的后面去啊,这是从尾部追加,如果说你想从指定位置的话,这时候就不要用 app, 用什么?用 insert, 然后这时候呢,在这指定一个你要最佳的这个缩影,比如说我们在汤姆的后面,在杰瑞这块来最佳,那就写个一啊,这时候呢,这个汤姆三就会跑到杰瑞的前面去,这是插入的操作。 那么第三种呢,就是给它同时最佳多个值。其实最佳多个值呢,现在就是把两个列表进行一个什么进行一个合并了, 比如我重新定义两个列表,第一个是汤 jerry 啊,只定一个啊,然后再定一个 name star, name star 呢,也是一个列表, 我们叫张三,然后李四, ok, 那 下面呢,咱们把 name 二给它,完全放到 name 一 的后面去,这时候叫 name 一 点 extend name 二。这时候呢,我们把 name 一 和 name 二都打印出来啊,看一下哪个有变化了。好,我把前面呢先注视一下 执行啊,这时候给大家看一下啊, name 一 有变化, name 二呢?值呢?被追加到 name 一 的后面去了啊, name 二并没有什么变化,这时候 extend 可以 同时追加多个值进去啊,这是我们说的这个修改操作啊,修改操作中的追加这一项,然后大家要搞清楚你是怎么追加,如果你只是从后面追加一个,就是 on 的 啊,如果你要是指定位置最佳呢,就是 insert, 如果你同时从后面最佳多个,相当于列表合并用的就是 extend 啊。最后一个呢就是删除,我们再看下这个删除啊,删除呢,刚咱们讲了一个清空,就把所有的数值啊都给它删掉,是 clear 啊,那么如果你想删除某一个的话, 如果你想删除某一个的话啊,那么这时候呢,它有三个方法,第一个是 remove, 指的是我们指定元素删除,它是根据内容来删的啊,你要删除哪个内容?第二个呢是 pop 啊,这个 pop 的 话呢, 这个 pop 的 作用呢,就是可以指定位置进行删除啊。 remove 是 根据直删, pop 呢是根据啊缩引来删除。 第三个呢是 delete 啊,这个 delete 呢,是指定位置元素进行删除啊,调 delete 啊,它的方法跟上面不太一样,上面都是通过变亮点方法来进行调用的。 delete 呢,是单独来进行使用的一个函数。我们来看下这个删的地方怎么来操作 啊?首先,比如说我先是根据位置删除,根据所以删除啊, 比如说我想把第一个字给它删掉啊,这是我们通过变亮点,我们根据位置删呢啊,它用的是 pop, 所以 点 pop 就 行了,然后输位置, tom 呢,是第零个位置啊,写零就可以了,然后咱们再输出一下, 这你看那个 tom 就 没了啊,从 jerry 开始了,这是根据缩影删,但根据缩影删呢,有一点就是你不要去删没有的缩影,假如删缩影没有的话,它就约界了,所以所有对缩影的操作呢,都要防止约界这个情况出现。第二种呢,是根据直删, 删除某一个值,删除某个值呢,用的是 remove, 这里要输入值啊,比如我们输入删这个 jerry, 好, 那么 jerry 就 被删掉了。那么如果说你删这个值不存在的话,会怎么样 啊?你看,当你删的值不存在呢,它也会报错误。好说你删这个值啊,它不存在,所以你要确认这个值是有的,再去删,否则会报错的。 然后第三种呢,是我们说用是 delete 这个方式去删啊,那没有 delete 方式去删呢,它直接要调 delete 就 可以了,然后输入你要删的元素,比如说我要删第零个元素,好,那谁被删掉呢?执行一下,好,咱们打印一下啊, 这时候这个张三就被删掉了啊,张三就被删掉了啊,这删除第零元素,这 delete 呢,和前面不太一样,前面都是变量调方法来删的。 delete 呢,本身就是一个指令啊,他就直接可以把我们要删的值给它删除掉,但同样道理,还是你要给他 删的这个元素的一定是存在的啊,它如果不存在呢,肯定是删不了的。最后还有一个呢,是 clear 啊,还有一个就是 clear, 就是 我们在上面所提到的这个 clear 啊,这 clear 呢,直接就是清空掉了 啊,不需要存任何的参数啊,这个速度直接就空的了啊,这是清空, 好,那么这是我们对数组的啊,对我们这个列表的一个操作啊。我们简单回顾一下,由于这个列表呢,它是一个可变的对象,所以我们就可以对列表进行一系列的修改操作啊,那么可以直接通过下标啊,去 修改它的某个 string 的 值啊,我们也可以通过 append, insert、 extend 等方法去给它追加值。 删除这块呢,可以根据缩影去删,也可以根据直去删啊,当然你可以直接把它清空掉。那么之所以我们可以进行这些操作,一个最主要的呢,还是因为列表它是一个可变的对象,这个要注意一下,对于不可变对象是不能完成这些操作的啊,这是关于列表的一个修改, 那么列表的话呢,它本身是一个有序的排序,所以我们当然就可以便利它了啊,它的编辑方式呢,和字布特编辑方式是一模一样的,就通过 fold 循环的方式就可以了,这地方也是一个简化的方式,我们来看一下啊,也是通过 fold in 的 方式, 好,我们进两个吧,然后直接大家就封印就行了,这时候取到的就是便利出来每个列表的元素了啊,这个这些都是我们系列中比较通用的方式啊,不做过多介绍了。最后呢咱们再讲一个很特殊的列表的创建方式啊,叫做推导式, 推导式,推导式什么含义呢?那么推导式呢,它指的含义就是我们利用一个很简洁的 啊公式吧啊,那么动态的去创建这个列表,比如说我们看这个例子啊,这个例子呢,前面指的就是求 x 的 平方啊,这是两个星号代表平方的意思啊,那么这个平方怎么算? x 从什么去取呢?里面写了一个小的负循环的预算符 啊,否循环的一个语句,那么这个语句的含义呢,就是从一到六来进行循环,那每循环一个值呢,和二之间做一个计算,都有它的平方计算,那么相应就是我们做的是一的平方,二的平方,一直到六的平方,最后呢我们就构建出来这样的一个列表啊,这种方式呢就叫做推导式,比如说它是根据某一个 我们的运算符啊,再配合一个 for 循环的语句啊,帮我们构建这样的一个列表啊,这个大家了解一下啊,这是一个比较简洁方式的构建列表的一种方式啊,叫做推导式, 那么这是我们关于列表的一个介绍,列表呢是咱们后面用的特别频繁的一种数据类型,那么大家在使用中呢,一定要记住它是一个可变的啊,并且它也符合我们序列的一些特征。 下面呢我们来讲一下最后一种我们训练的数据类型叫做原组,那么可能你刚听到原组的时候会觉得很陌。

逼自己十天学完拍算核心语法,你会发现你真的很牛逼,纯干货,不废话,存下吧,真的很难找全了!警告,本视频耗时六个月制作,制作时长六百分钟,陪你系统的学习拍算核心语法,这应该是目前平台去良心全面的入门到进阶的拍算全套教程了,哪怕你是零基础也能听懂。 为了打造这套 python 课程,我系统研究了国内大量教程,发现普遍存在内容杂乱、节奏拖沓、实践不足等问题。相信大家在之前也或多或少的看过 python 的 系列视频, 但是网络上学习 python 编程的资源太多了,家家都说自己的最好,这个难为坏了有选择困难症的伙伴们。这些视频总结下来就是鱼龙混杂,滥竽充数。 所以我决定摒弃所有的花里胡哨,用最原始、最直观、最纯真的方式呈现出来,能让大家最直接、最快速的吸收,并且最大程度上的活学活用,带大家由浅入深地从零开始学习 python 编程。 除此之外,我把学习 python 的 路上所需要的学习包都准备好了,有搭建 python 开发环境的资源包,还有详细的 python 学习计划表,路线,几十上百记素材,电子书籍和教程等等, 只要你能想到的素材,我这里几乎都有,我都会整理起来放在粉丝群,有需要的伙伴留言打卡学习,可一步获取。 相信我,这套 python 系列教程将是最齐全、最详细,讲解清晰易懂的小白专用课。如果看到这里对你有所帮助的话,请给我一个免费的赞吧,让更多想要学习 python 的 小伙伴看到这个视频, 真心希望各位观众老爷们不要白嫖,今天我们学内置函数和函数知识的总结巩固 好,那接下来咱们来说说 python 的 内置函数啊,当然由于咱们现在所学的知识有限,咱们只能讲一部分,等后续咱们再去讲解到,比如说函数高级的部分,以及咱们讲面对象的部分,还会 啊提及另外的一些个 python 的 内置函数。首先说一下什么是内置函数啊?内置函数就是呃,直接能拿来用的 函数,就 python 直接提供给你的这些东西啊,比方说我们之前聊的 print 有 input, 对 吧?这种东西它都属于是内置函数啊,所以也就解释了为啥咱们上来就能直接写个 hello world 啊,所以也就解释了为啥咱们的它是内置的,你直接拿来就可以用的 啊,没有任何限制的,哎,这也叫内置函数?那拍摄里面一共提供了非常多的内置函数啊,我这面整理了一个脑图啊,脑图的这里面呢,一共大概六七十个吧,六七十个,然后反射呀啊,面向对象啊,还有生成器,替代器啊,以及作用于相关的这些东西,咱们都得等到 呃,后面才能讲到啊。那咱这一节呢,先看一下哪些东西,咱们能能能聊,现在能聊的,现在你能可以掌握的东西,对吧?咱们一个个看,首先咱们呃从这个最大的开始吧啊,从这个基础属于类型相关的这个地方开始来打开, 里面呢跟数字相关的打开啊,打开呢,其实很多你都是见过的,比方说不儿 int, float, 对 吧?这些东西都是很常见的啊,它它的功能其实主要就是这个,比方说我来个 s 等于一二三, 对吧?那,那这个是什么东西?这个是字母串,那我想把字母串变成数字的话,那我需要用 int 是 吧? i 等于 int s 把它括起来 一样的,我想让他变成不尔值,那就是 b o o l 是 吧?给他,哎,扩起来,我想要一个呃浮点型的数据,那就来一个 float, 对 不对?所以这三个基本上没什么可聊的啊,基本上就是呃跟数学上的一些个数据类型啊,不是,数学上就是数据数据类型转换吧相关的, 然后这块有个 comrade 啊, comrade, comrade 表示的是负数啊,是负数,这个我我就给你标注一下就得了啊,这玩意我也不知道干嘛的 啊,这个呢叫负数啊,就是呃负数里面的。数学里面呢,又分成了什么呢?叫 十步啊,加虚步啊,就这么个东西叫负数,就是我们十步很简单。就十数吗?比方说一二三四五六七八小时啊,我们自然接中能够表示出来的数, 实数,虚数呢,就自然就容易表示不出来的。比方说啊,有这么一个值啊,数学上的数是 i 的 平方等于负一,那我们知道正常情况下 i 的 平方是不可能等于负一的,但此时 啊,我强行的规定 i 的 平方等于负一呢, i n 呢,就是个虚数啊,它不存在的啊,有一个虚数具体干嘛用我真不知道。各位啊,这个是跟数学相关的啊,然后这个就收了,然后再往下就是这个禁止转换的一些个内置函数, b, n, o, c, t 和 h e x 这三个东西呢,能记住就记住啊,记不住也无所谓啊,一个叫 b, 一个叫 o c t, 一个叫 h e x。 来简单的给各位去演示一下啊,你就能明白了。比方说现在我先来一个,呃 a, 他 等于十八啊,等于八吧,等于八,十八吧,十八。那此时我们知道在我们生活当中我们熟悉的是十进制,对吧?这是个十进制,我想把一个十进制变成一个二进制,对吧?那怎么办呢?哎,我们可以这样就通过并 啊,然后把这个 a 传进去,他就会帮你自动的处理成二金质的样子,走啊,零 b 啊,零 b 表示的是二金质后面幺零零幺零 a, 这个是呢,他的具体的数字啊,具体数字,所以这个东西打印出来是零 b 幺零零幺零啊,这个就是二进置的十八啊,二进置的十八。那我还有说 o c t o c t 呢,是八进置 o c t a 啊,八进置的话打印出来的呢,是这个的零 o 啊,零 o 二十二啊。再往下 print, 还有个 h e x, 里面我放上一个,比如说 a 走,这个表示的是十六进置零叉 啊,零叉十二啊。所以我们在呃程序里面有的时候会遇见一些个错误,它会告诉你零叉什么什么玩意,那这个时候,尤其是 windows 叉 p, 哎,有的时候我们经常会看到 windows 叉 p 里面会弹出一个窗, 哎,在中间弹弹出个窗,然后给你显示个呃什什么地址错误,这里面写的就是零乘什么什么什么玩意,对吧?当你还想着零乘什么什么玩意,有什么可乘的,怎么乘不都是零吗?对吧?但其实并不是这样,他是一个十六禁制的一个地址啊,一个地址,所以他是十六禁制的一个数, 那这个是,呃,我们对应的三个禁制啊,一个是八禁制,一个是十六禁制啊,了解一下。那我如果这么写,看到 a 等于, 哎, sorry, 零币啊,一二三啊, sorry, 一 二三幺零零幺零。我现在有这么一个数,这个数很明显他是一个二进制的数,对吧?我想把这个二进制的数变成十进制怎么办, 是吧?二进制变成十进制的数怎么办?用 int 括号把 a 扔进去来,此时我们得到的看着十八,哎,这个就是把二进制变成十进制,一样的,这些东西都可以给它变成十进制,知道吧?所以这个是二进制 转化成十进制啊,这么一个规则。所以 int 是 不是多功能啊啊?但是了解一下就可以了,平时很少,或者说我们能直接的用到二进制,这个收, 再往下这个跟数学运算相关的啊,这里面我就直接拣重点啊,真正有用的东西咱们拿出来,比如说 pow 啊,会有点用,然后 summing 和 max 这三个玩意是有点用的,那其他的用处不大其他的用处不大。比方说 我先写一下,有丧有命,有这个这个这个这个 max, 是 吧?应该是这三个还有个 p o w, p o w 其实也不太重要啊,咱们了解一下 p o w 是 什么玩意呢?比如说 a 等于十, b 等于三。好了,接下来注意看了,我 p o w a b a b 来右键走 干多了啊,听不见,走看是一千。那这个是怎么算出来的啊?其实就是十的三次方啊,十的三次方在 python 里面有一个运算符也可以完成这个操作,比如说 a 啊,星星 b 啊, a, 星星 b, 这个表示的也是次方,看着啊,结局是一样的啊,结局是一样的,所以这个表示的是次方啊,次方叫次密啊,次密, ok, 那 这个是这个 pow, 那 往下呢?我们来看一下,有个 summing 和 max 啊,这个三个玩意是有点用处的,比方说我准备个列表,列表里面随意的放一些数字啊,十二 四五六三,十二,十八,六十四五十七。好了,接下来我们来做一个这么个操作,比方说 max 来 list, 那 他会帮我们计算出来这个列表里边最大的那个数 啊,直接告诉你最大的数是他好了,那有最大的数,一定有最小的数。 main list 来右键走, 看到吧。十二是最小的数,那我想算一下和,那就是 some, 然后呢? list 走 看了,这是六百三十九啊,就是都都加起来,所有数加起来就六六百三十九,所以这三个东西呢,呃,我们在一些个特殊场景啊,可能会用到。就是就是就是想要做计算呢,求最大最小啊,哎,用到这些玩意没啥可说的啊,这玩意都是固定的操作。 来,接着看,接着看,输赢算,收,这个呢,就收了啊,然后下面是跟数据结构相关的啊,这个比较多。第一个叫列表和 list 和 top, 这个两个人就不多解释了, list 呢,就是把你所传入的东西给你变成一个列表 啊,把你所传入的东西变成一个列表,比方说我假设有个 size 集合啊, size 集合一二三,对吧?我想把它变成一个列表,那就是类似的,等于类似的括号,哎,把它 弄过来,然后打印一下 list 来用箭走,看到吧就变成了一个列表,那此时你要知道的一个事情啊,各位,这个地方一定要知道的一个事情就是我们 list 把传递进来的东西变成一个列表,他是怎么办到的?注意看啊,我们把一个 集合塞进去,他能给我变成列表,那我如果往里面放一个字母串,呵呵哒。看着放一个字母串,此时我们拿到的是呵呵哒,那是个什么效果呢?各位,是不是把传递进去的东西进行循环便利,然后拿到每一项东西,然后装到列表里面去, 对吧?应该是这样的一个过程,所以他的逻辑应该是这样,就是 for item in sorry item in 这个 s 啊,甭管你这 s 是 啥,反正得能负循环,循环出来的东西加到那个列表里面去,所以是例子等于这个,然后例子的 append item, 他 一定是这么干的, 对吧?所以这个列表里面的啊,这个 list 里面其实就是类似这样的一个操作。那我们知道这个原理之后,我们就要知道一个事情,就是 list 它内部一定会有一个循环,这个循环我们暂且啊规定他是负循环, 他内部一定是有个负循环的,这个负循环负责循环你传递进去的东西,循环出了一个装到列表里面去,循环出了一个装到列表里面去,才能出现这样的一个效果啊,这个地方是很重要的一个点啊,后面我们讲叠叠器的时候, 这块是个是是是个好东西啊,是个好东西,好往下走,他不解释了,他不是把你要传递的东西都变啊,就是组合起来变成一个圆组啊,收 下面这个呃,这个是 reverse 的 和 slice 啊,这俩玩意就不解释了。这个 reverse 呢是翻转把你整个列表框翻过来, 对吧?最小的变最大的,这样的变最小的啊,整个翻过来,那 slice 它呢是切片切片啊,这个给你们去。呃。演不演示?这个我不想演示了,这个东西跟我们写这个东西是一样的对吧?一冒号四冒号三二一样的,只不过 slice 呢要求的是个参数 啊,是一三四,然后呢三对吧?从一到四每三个出来一个啊。然后呢我们准备一个变量装一下他那想想,哎,想用他往出切东西的话呢就直接是比方说一个自助串呵呵呵呵呵呵呵呵。然后中括号 s 就完了啊就完了,给你们演示一下吧,对吧?都写到这了,走那喝。从一切到四不就三个吗?那每三个出来一个那那就就是出来一个啊,对不对啊?所以这个东西我给你改成改成二吧改成二吧,这时候能出来俩喝 对吧?你可以你可以自己尝试一下啊,这个就是我们的普通的那个这玩意一冒号四冒号二啊,哪个简单?肯定是这个简单是吧? 好了那再往下走这个收啊,再往下跟字母串相关的。那这个有点多,有 s t r s t r 就是 把你传入的东西变成字母串,这是其一,其二呢它可以负责抽象一个字母串是吧?否 mate 否 mate 一 会聊这个我们要去聊一下的啊否 mate 有 用 来啊 bug ray bug ray 呢?是以前的自己好吧,以前的自己现在没人用它了 啊。然后是 memory view, 这个也没啥用,这个我干了这么长时间,我也没没遇见过用这玩意啊。 memory view, 这是内存的一个展示,但是说实话没看到它展示什么东西啊?然后 o r d c h r 啊,这俩玩意是一对,这俩玩意是一对,一会聊啊,来,拿过来 叫 o r d 和 c h r 啊,这两玩意是一对,然后再往下阿斯个,阿斯个呢,就是把你所传入的东西呢,以阿斯个码的形式,呃,以这个这个字节的形式做一个切割,然后展示出来,这个玩意也没啥用。好吧,这玩意也没啥用, r e p r r e p r 呢?呃,他和这个 str 基本上是是是一对,他俩是一对,但是呢,这个东西不到面向,我现在跟你说,其实意义不大啊意义不大,这个东西咱们暂且先搁浅,后面咱们讲完面向再跟你们去聊一下啊,他是有什么用啊?但是说实话,嗯, 用处并不是特别特别的多啊。好,那这个呢,我就把它收一下,然后咱们来到这面来,是吧?这三个玩意摘出来了,这仨玩意有有用那一个一个的看。首先说这个否 mate, 各位,否 mate, 我 们如果把它翻译过来叫什么意思? 叫格式化是吧?格式化,那比方说我现在有一个,呃,数字,比方说数字叫 a, 等于十八还是十八?那接下来我们 print for mate 来 for mate, 把 a 进行格式化啊,格式化,那格式化的话,你得告诉我格式是啥, 是吧?那一个数字我能格式化成什么呢?各位,我可以这么来看,往里面怼上一个 b 啊,怼上一个 b, 这个 b 的 作用,走,看了,是不是就变成了个二金字了,对吧?它就变成二金字了,好了,此时这个 b 表示的是二金字。 好了, b 既然是二金字的话,我接下来试一下吧, o 是 什么玩意?这是,哈哈,看不大出来是吧?往上拉,往上拉, 看到这看到这个东西没有,是吗?是不是 o c p 是 不是八进制啊?各位,那接下来十六进制,你会想当然的以为写个 h 就 可以了,是吧,来试验一下啊,嘿嘿,走 行了,报错了对吧? h 不 行啊,这个地方要写 x, 写 x 啊,十二十二来,往上拉, 往上拉啊,空口无凭,看着没?哎,零乘十二,所以这个地方,这个地方 x 表示的是十六禁制啊,所以这个地方 o 表示的是八禁制,这里面的 x 表示的是十六禁制啊,要要要要,要记得这个事, 然后,那它有什么用啊,对吧?我用这个 b 呢, o c t 啊,还有这个 h x 啊,也可以啊,为啥要怼成个 b? 各位,想象一下啊,我现在要求你给我把这个十八 啊变成一个二进制啊,并且呢,我要求是一个定长的二进制,来,我们先把它跑一下啊,现在是不是幺零零幺零啊,对不对?那我们说一个字节是几个零,幺是不是八个呀?各位,那我现在要求,我就想看看这一个字节长什么样, 对吧,我就知道,我就想看看他这一个字节长什么样,那此时我是不是得把这个,这个,这个二进制,对吧?然后前面怼上康康一堆零啊,对不对?那补几个零呢?各位,现在是五个对吧?五个的话前面应该怼几个?怼三个,对不对?怼三个,那,那,那我如果是这样, 对吧?你就得怼七个,是不是?所以此时我们就得想办法能不能给他拉长成一个定长的二分之一结构。那我们可以在前面怼上一个什么呢?来,首先怼上一个零,零表示的是往前 怼的这个,这个这个数数据,就比方说你刚才走的不是幺零零幺零吗?那你往前怼才能怼,怼零才能,才,才能,才能把它补齐吗?对不对?那这个零表示的是前面补充的是零,那补,补充多长?一共有要要要要多长的二进制,那么怼成一个八 零八 b, 表示的是我希望得到一个由零补充的八位二进制。来,走,你看见了吗?八位二进制,来,我们改成十八。 走啊,八位二进制,那如果是这样的东西,哈哈哈,走,看见了吗? 啊?他不可能给你切开的,知道吧?他不可能,不可能给你切开的,一切开的话数据就不够了,所以如果你超了他的范围,那么他会正常显示,如果不够自动给你补漆啊,自动给你补漆,所以他只能补漆,不能切割, 哎,只能补齐,不能切割, ok, 对 不对?这就是一个补充的一个东西啊,这个,这个有用,各位,这个有用,这个等我们后面比方说我们学到网络那块你就知道了,网络在进行通信的时候需要一个 ip 地址,那 ip 地址他的每一位 都是要经过这样计算的,得到一个这样的码,拿着这个码去和子网,然后去做各种各样的操作 啊,来判断是不是子网啊,是不是这个局网啊,反正就就就一大堆的判断,都是从这来的啊,好,这个东西啊,记得有这么一个玩意啊,然后往下走,第二个叫 o r d 和 c h r 来,我们一个一个的看, 来一个一个的看,比方说我现在,呃,准备一个文字吧。啊,中国的中, 好了,我们知道中国的中,他咋说呢?这个玩意他在这个,这个,这个用那个 hold 里面, 对吧?或者说在我们内存里面,他是有一个一个一个一个存在的,对吧?运行的时候肯定是存在,那么存在的时候,你要知道他在计算机里面最终也得是以零幺的形式,对吧?来展示,那这个时候零幺显示的话,他就得有编码,那个编码挺好,在 python 里面, piston 内存中使用的是 unacode 啊,使用的是 unacode, 因为内存它不是一道存储, 懂吗?他不像那个那个,呃,硬盘的存储,内存的存储是随时可能被抹掉的,是吧?所以呢,浪费点,浪费点,该回收回收啊,不会说特别特别浪费的这么一种情况,所以我们用这个内存里面用优内扣的是完全可以用的。啊。那我这个时候 存在中国的中字,那中国的中字在优内扣的里面,他就一定会有一个编码,对吧?他是第几位的编码?那我们就可以通过 o r d 来 o r d, 然后把这个中国的中字给他传进去,让他告诉我中国的中字的编码到底是哪一个码位来走看,那中国的中字是二零零幺三这个位置啊,二零零幺三这个位置,所以中国的中字, 哎,在哪呢?在这个 unico 的 中码位,码码,码位是二零零幺三 啊,码位是二零零幺三。那接下来我们来呃看一下,如果我现在有个二零零幺三,我想给它变成中国的中字,那怎么办?那很简单, c h r 走,所以我说它俩是一对,看懂了吗?它俩是一对,所以它呢是给出编码位置,然后呢展示出文字, 哎,展示出文字,那么接下来有了这个玩意,其实就很有意思了。我们说 python, 他 用的是 uni 扣的,但是他用的是 uni 扣的的一个面,叫 ucs u s c 啊, ucs 反正是杠二的那个,那个标准,所以是整个 uni 扣子的一个面,他最多只有六万五千五百三十六个字。所以接下来父爱 in range, 六五五三六, 然后我们就可以打印 c h r 是 吧?然后给上一个 i, 哎,跟上一个 i, 那 每一次打印完了之后呢?我们都希望它能有一个 呃空格的一个效果,所以加上一个空格,然后在末尾注意啊,我们处理一下 i 的 啊,处理一下按的,我不希望它默认给我换行,因为默认 print 是 可以换行的,那如果换行的话,相当于一个字一行,一个字一行,我这个没法看了,所以我加上一个按的等于它啊,按的等于它,这样的话我们的展示效果会好很多。来,我们把它跑一下啊, 走,这个地方比较好玩啊,也比较慢, 这个机器可能会有一个短暂的卡顿啊,看,最后挂掉了啊,挂挂去吧,来,不管他,看,往上拉,往上拉, 看见了吧?这就是我们说,呃,能够看到的所有的文字符号,但是有些符号是显示不出来的啊,比方说最前面这些东西,这些东西是什么?是阿斯克码的,记得吧,阿斯克码的,阿斯克码的有些前面的东西是什么?是操作符, 这把是操作符,它并不是正常的文字啊。然后如果你的电脑是 windows, 各位你看不到我这么多的文字信息,看见了吧,我这里面各种各样的神奇的文字,发现没有 啊,有,有些文字你们在 windows 里面是看不到的,原因呢?是因为我这个最终的输出不是在这控制台里面吗?对吧?这控制台麦克我这笔记本啊,这个默认的输出呢是 u t f 八,你们那边的默认是 g b k g b k 的 编码级肯定没有 u t f 八那个那个大,那个强大,知道吧,所以 这个里面我这块基本上能展示出来几乎所有的文字符号,你们那边是很难展示出来的啊,所以有一些东西展示不出来,显示问号,你别担心啊别担心,你看我这有些东西都显示不出来,哈哈哈,有些东西也显示不出来啊, 然后往下拉看,各种各样的文字啊,各种各样神奇的符号是吧,就感觉又回到了非主流年代是吧,然后底下呢,还会有一些特殊的东西是吧?看这玩意啊,这个东西啊,这是我这个电脑的支付机啊,你们的电脑未必有哎,这个玩意我明白,还有这个玩意我也明白, 对吧,这是什么鬼哇,总感觉有点混乱是吧?来往下拉 啊,然后到这个位置呢,开始有一些个呃,这个叫什么呢?就偏旁部首啊,然后是一些个问日本的品什么评价评价名片假名这些玩意是吧,然后就开始了往下走 看,那从这开始应该就进入到了中文的一个状况啊,我们平时不常用的一些文字在这里面都能看的见,比方说我搜一下啊叫帽底帽底,这呢看见吗?这是帽啊然后还有底帽底 那这呢是这个是底还有什么饕餮是吧。这里面都有,还有一个呃这个字 对就念 e 啊,四个火念 e 啊,所以这个地方嗯就是你可以发现很多你平时见不着的字。这里面都有啊可以拿拿着玩玩啊。以后起名字的时候是吧,以后你当爹的时候不知道那个名字怎么来。然后你可以参照一下用内扣的 啊。开个玩笑啊这个东西可以拿着玩一玩啊。好记着有这么两个东西啊一个叫 o r d 一个叫 c h r 好 了走 再往下呢这个就没啥了是吧。字母串这个就完事了。然后是字典字典的操作里的啊,然后是 site 然后有个 frozen site。 frozen site 呢叫 frozen 什么意思?叫叫冰冻的,冻结的冻结的 site 它不允许发生更改不允许发生更改这个其实是参照着谁呢各位参照着这个这个列表和原组我们想列表 啊和原和原组之间的关系不就是原组不可变列表是可变吗对不对。那集合我也想有这样的效果怎么办呢。一个是集合一个是啊这个冻结的集合对吧。所以冻结的集合跟 top 是 差不多都是不可变的啊,你可以尝试一下 去去去玩一玩啊。跟普通级和操作差不多只不过他没法去增强点啥操作啊。好了这个收啊收不重要,走然后往下是内置函数相关的,比如说 l l l 咱们学过了是吧还有 sort it 啊 innumerate 这个一会咱们说 innumerate 要说一说 哎,怎么写来着啊。这个 innumerate 然后再往下走奥 i n 这俩玩意呢说一说 啊然后再往下就是 zip filter, map 还有这个 sorted 这个玩意得等咱们后面讲完这个 叫什么?叫匿名函数咱们再去聊它啊这玩意不讲匿名函数,讲他们就是在耍流氓。好吧,这个后面咱们再说再说这这这些东西啊, ok 那 这个呢就 ok, 那 这个呢咱们就收了啊。好,我到这面来咱们把这三个各位去讲一下啊。第一个叫咱们先说奥和 any 这俩玩意好理解, 来奥比方说来个一二呃呵呵。 嗯,豆沙包好了,注意啊他他要求是个可可可叠带的。这样啊,放进去那么放了这些玩意看他最后返回的是啥是吧。先打印一下来打印个出是吧很有意思。来零 走,看着变成 false 了哎变成 false 了,那这玩意相当于到底是怎么回事呢?那规律在哪呢?注意看了你把奥当成暗的来看啊当成暗的来看。 好了接下来零零咱们之前聊过零表示它是什么?是 false 吧,是假假按的假按的真,你看吧, force and force and to 那 我们按照之前的预算逻辑的话是不是一定是假呀各位所以他得到的结果就是 force 那 如果放成个一 相当于就是 to and force and to 那 最终的结局呢走对吧还是 force 那 我就需要把它变成一个一二三走 看着结果就是出了,因为它也变成了出了对吧,所以这个时候哦它的作用相当于暗的啊,相当于暗的这个东西在全站那块能用的啊,你搞爬虫也好啊,搞这个数据分析也好啊,很少能用,用到它,然后再往下 i n 那 i n 那 其实讲了奥的话, i n 其实你应该能猜到是什么玩意是吧?来,我们把它跑一下之后啊,是出来给我变成零 走啊,还是处是吧?变成空走还是处来把它再给我干掉走 啊,变成了 false, 所以 它相当于什么?当成奥来看啊,当成奥来看啊,那这个是我们要奥和 any 它,它俩基本上什么地方能用到呢?就比方说我在数据库里面查询一些数据 啊,查询数据,那么这个时候我来判断这个数据是不是空,或者从前台页面返回这些数据,我判断这个数据是不是都没有问题,哎,我可能会用到这个哦。啊和艾米 好,那再往下 innumerable innumerable 呢?它是这么个东西啊,是这个玩意? so, 比方说准备个列表吧,啊?不整列表这玩意看不出来?张无忌,张翠山, 嗯,然后张三丰,然后是张大的啊,张大的也不知道他哪儿的。来 for item in 啊, innumerate, 然后 list 来 print item, 那 此时走来,我们能看到零,张翠山,二张三丰,三张大的, 那什么意思? numerate 是 不是能够直接拿到什么缩减和元素啊,对不对?按照我们之前讲字典那一块的逻辑来看的话,我是不是可以这样干? index 可以 吧,那么 index 和 item, 那 这个时候我们就能够拿到 index 以及 item 哎,能拿到 index 和 item 啊,所以这个东西相当于什么呀?各位?相当于这样做, for i, 然后 in range learn list, 然后此时我们又拿到了。谁是不是拿到了 i 又拿到了啊? sorry list 里面的第 i 项啊, 对吧。哎,算了,点错了啊,看,这不就是上面这个,这是下面那个对吧,拿到的结果是一模一样的啊。这是 innumerable, 然后 innumerable 呢?可以更改这个 index? 可以 更改这 index 啊,但是我不建议去更改,更改的话呢,也很简单,直接这面给上一个三走 看见了吗?上面就从三开始数了啊,但是这个地方我强烈不建议你去往里面怼上那三。好吧,就这样是最 ok 的, 这样是最 ok 的, 因为你的 index 直接就是你的,所以你想去更改你的列表里面的元素信息也会变得异常的简单啊,所以记着一点啊,有 innumerable 这么一个存在。 好了,那这面就完事了是吧,可以收了啊。右边的话只能讲它啊,因为其他东西咱们都没讲。那看一下这其他吧, 这其他里面呢? exe, c 啊, evo 啊, compil 啊,咱们下次说内置函数的时候会跟各位去聊啊,这仨呢,就是有,有 就是容容容易迷啊,所以呢,咱们把它放在下次那 input print 不 说了,输入和输出, 然后哈希和 id。 这个哈希呢,之前聊过就说,呃,字典在存储数据的时候,它要求 key 必须是可哈希的,那可哈希呢?为了什么?就是为了计算哈希值,所以哈希就是用来计算哈希值的。 python 里面我们得到的,呃,所有的不可变的东西都可以是, 呃用来计算哈希值,比方说,呵呵哒。哎,这个东西可以计算哈希值啊,哈希来 s, 这个珠石掉啊,这个珠石掉,来,走,你看哈西值是这么个玩意,来,再走 啊,又变成这么个玩意,再走啊,变成这么个玩意。所以他算的哈西值实际上是什么呢?就是拿着你这个字母串做一个数学运算啊,你甭管他怎么算呢,反正听康一顿算,算出来记的一定是一个数字 啊,一定是一个数字,这个数字他会想办法转化成内存地址,然后进行数据的存储,然后进行数据的存储,这个呢叫哈希表, 好吧,这个东西就弄过来叫哈希表,也就是咱们那个什么玩意,就字典, 字典还有什么集合,哎,都是这么来算的啊,都是这么来算的,所以他要求你的 k 必须是可哈希的,因为他要通过你给的那个 k 算个哈希值算个数字,这个数字他会想办法把你转化成一个内存地址,然后存进去, 然后存进去。就好比说啊,这是你的,那这是你的,这个这个这个,呃,内存,好吧?内存呢?你把它想象成蜂巢柜,蜂巢快递柜 里面不拉不拉不拉不拉不拉不拉,对吧?一堆的这个这个这个这个这个这啥玩意呢? 就是小箱子,好吧?一堆小箱子,每个小箱子都会有一个自己的编号,叫内存地址,对吧?每个箱每个地方都会有一个,每个箱子都会有一个独一无二的编号。那么我们假设想存一个东西啊,比方说想存,呃,这个这个这个这个 存,呵呵,然后呢?具体的数据呢?就就是一个包裹啊,就是一个包裹,这就这就是你的数据了,那接下来他会拿这个呵呵 啊去做一个哈希计算,计算出来是个数字,那么这个数字他会想办法对应到这里边的啊。某一个盒子,假设是这个盒子好了,那么就把这个盒子打开,把这个呵呵和一个包裹塞进去, c 进去,那么你下次想找这个数据的时候,你是不是得给我个 key 啊?是吧?咱们字典往出拿东西都得给 key 啊,那根据这个 key 去查找东西的时候,那么这个 key 他 怎么来找?也是再做一遍哈希计算,算出来那个哈希拿着哈希值再去找,那么 你刚才算出来是这个位置,现在算出来应该也是这个位置,对吧?那就上这个位置就把你的包裹拿出来了,知道吧?这就是字典最简单的工作原理,也是哈西表的工作原理啊,当然你会发现,哎,老师,你这个地方每次算出来不一样啊。哎,没关系,因为我每次运行他都是程序运行完了,再运行的话又是一次新的 啊,再再运行又是一次新的,你不信你可以看一下。这样啊,在同一次运行的状态下 啊,这是运行一次,这是这是这是就是我右键 run 的 一次,启动这个程序的时候相当于算了两次吧,来这个时候他一定是一致的, 看懂了吗?这一定是一致的,但是我这次再运行的话,肯定又是个新的了啊,又是个新的了,看着,但是只能保证他们在程序运行的过程中是一致的啊,是一致的。那么再往下一个这个叫什么?叫 id 的 东西是啥呢? id 就 直接是内存地址了,就直接算你这个,呵呵哒,存哪了? 直接算你这个 id 存哪了?那 id 存这了啊?不是你这个字母串存这了。 好吧,所以这这两个人是有本质区别的。哈西是一个计算啊, id 呢?是直接拿到你这个东西的内存地址啊,直接拿到他的内存地址啊,这个这个完全不一样啊完全不一样。 好,那再往下这个收,然后再往下呢?有个叫 open open 不 说了啊,文件操作,然后 import, import 呢是后面我们学完模块的时候会能了解到的。它是用来导包的啊,导包的咱们收啊。这个暂时还用不到。就是你你你真的学完模块了你也用不着它啊。 help, help, 叫帮助。 help 来帮助。能帮助什么呢?我看一眼啊,字母串有什么操作啊?你帮帮我,我想学学字母串。走, 还念啥了各位。嘿,是不一大堆英文呐,来,往上拉,拉到上头,拉到上头看着啊, 他说 help on class s t r 就是 在这个 build ins 就 内置模块里面看一下 class 是 什么什么样的是吧?那 class 类是怎么声明的? class 的 一些个 啊,描述以及它有哪些功能是吧?都在这呢。那么各位这个东西到底是什么呢?我们按住 ctrl 点一下这个 str, 走,看 class str 来,我们拉到最上头, class str, str 括号 object 等于 str。 来看这玩意了吗?你一个一个对你就明白了。 好吧,你一个一个对你就明白了。其实他就是把那个原码啊,一些东西给你返回了啊,给你返回了。这东西什么地方能用到呢?在拍叉么里面你用不着他,因为拍叉么?我想看原码直接摁 ctrl 是 不点一点就看到了。那他是为了应对我们有些时候会在控制台里面, 在后台里面我们不是还讲过这么一个东西吗?对吧? python 还有一个一个命令行窗口啊,那命令行窗口里面我想看看 str 里面有哪些功能呢?我只能是这么干的,各位 对吧?哎,只能这么干。那往下敲,往下敲,往下敲,对不对?所以这个东西啊,就是你可以这么认为吧,它就不是给咱们正常人使的,哎,怎么退出去 啊,我不管它了,把它插了啊,再见。好,再往下叫,靠谱,靠谱也是得等讲到面向那块啊才能收到啊。这个东西不应该在这,它应该是上上面去啊,上到里面去, 然后再往下查看内置属性。 d i r 这个玩意是干嘛的呢?它跟 hell 差不多看着,比方说我现在有个字母叉, 呵呵哒。那我们可以打印一下 help 字母串以及 print 那 个叫 d i r 字母串啊,挨个看,走 来 help, 你 会发现你想看这个,呃,字母串有哪些操作的话,你必须得找到你要看的东西是啥,比方说我想看字母串有什么操作, 对吧才可以。你直接给这个对象或者给这个数据,他是没办法告诉你的,看到了吧?他是没办法告诉你的。那下面这个告诉你的是什么?各位, d l d, l s 咱们看一眼里面有什么东西? a d d 啊,这玩意都不认识。往下走,往下走,往下走。来到这个地方 开始我们大致是认识的了,比方说 capitalize 啊,首字母大写,然后呢有个 count 啊, encode, encode 聊过吧?括号是不是以什么什么结尾啊, find 查找啊,格式化呀,这个 index 干嘛呢?是不是括号可以呃, 查找那个缩写位置啊,对吧,还有什么?呃, is decimal, is digit 啊,还有我看看啊, is alpha 是 不是大写 lower 转化成小写,那 app 哪去了这呢转化成大写啊,还有 strip, start with 啊, split 记着吧,这不都是字母圈的操作吗?所以 d i r 能告诉你的是什么呢?是你当前这个数据能执行哪些操作 看到了吗?它能直接告诉你这些你这个数据能执行哪些操作。所以 d i r 跟 help 还是不一样的啊,不一样的 help 只能看类型啊,看原版那些东西,而 d i r 能直观的告诉你你能干些什么事。 ok, 那 这是咱们关于内置函数啊,就这一节跟各位去聊的啊,都是一些很基础的一些功能啊,这功能呢, 能记住就记住,记不住无所谓,了解一下,知道拍森给你提供过这些好东西啊,万一某一天你真用上了呢,是吧。把这个东西整理一下啊,自己整理一下, 然后剩下的一些,比方说反射相关的呀,还有这个,咱们这边不是欠哎,这个这个这个这地方不是欠了几个吗?这个地方有个 sortate, zip filter, map 是 吧?这些东西咱们后面还会再聊 内置模块的,内置函数的一些相关东西啊,这个还没讲完呢啊,包括反射这个地方得等得等面向对象才能讲完呢,所以这个东西要分成三部分来讲,咱们今天只是第一次啊,这些东西就这几科讲的东西 重点不是很多啊。重点不是很多,简单了解一下就可以了。你把我整理出来这些玩意呢,试一试就够了,基本上就足够了啊。 好,那关于第一部分的内置函数,咱们就聊到这,那咱们这块聊完了,这一章也就完事了。那这一章其实你最主要的要知道的东西,第一个就是函数如何进行定义 啊?函数如何定义?什么是函数?为啥要有函数?这个要想清楚啊。然后第二个就是函数的参数的相关东西啊,这个是比较多的啊,什么是行餐?什么是时餐?行餐分成了一大堆,他的顺序是什么?时餐分成一大堆,他的顺序是什么 啊?这个东西写多了,慢慢慢慢去去去融汇贯通啊,然后以及函数的返回值,返回值我们用的最多的是这种情况啊,就直接函数执行完了,返回一个结果给调用方完事搞定啊,就没有那么多废话啊,就就就最多的就是他。 然后内置函数这块呢,就是今儿讲这么多啊,简单的去了解一下就可以了。那么关于咱们这一章函数编程的上半部分,咱们就说这么多,那么到了下半部分,各位就是关于函数的一些难点的东西就出来了啊。对于,呃,你想做爬虫,想做一些一个基本的 叫什么呢?自动化办公,那么第三张,基本上函数的这些概念就足够你使用了啊,你想再进阶再深造一点的话,你接着看第四张,如果你没有这方面的 需求是吧?就就就是你想去做一些更深层次的东西,你再去直接看第四张,如果没有的话,你就直接蹦第五张就行了啊。好,那咱们这一张就说到这,谢谢各位。

这个视频我们将对字幕串类型进行详细解读。大家去快递站取快递的时候,每个包裹外面都贴着一张快递单,这张快递单上写着什么呢?是文字, 收件人姓名是文字,手机号虽然是数字,但是写上去也是当文字用,地址更是一长串的文字。字幕串就是用来存放文字信息的数据类型。无论你打算使用 python, 从事哪个领域, 必定会经常使用到字母串,所以我们一定要熟练掌握字母串类型。在前面的视频中,我们说到字母串使用单引号、双引号 或者三引号定义,当引号本身也需要作为字母串的一部分时,如果直接这样写, python 会报错。因为出现第二个引号时,它会认为字母串已经结束。所以我们要在外面使用单引号这样搭配使用。但是如果文本过长,同时出现了多种引号,这种方式就行不通了。 这个时候就需要使用反斜杠转移字母,反斜杠后面跟上单引号则表示单引号,跟上双引号则表示双引号。 常用的还有反斜杠, n 用来表示换行,反斜杠, t 用来表示横向制表符,相当于在当前位置按下了 tab 键,两个反斜杠则表示反斜杠,本身也就是一个反斜杠。记住这几个写字母串就不用愁了。那么我们怎么样在长字母串中访问某一个字母 或者某一段字母呢?想象一下,字母串就像一个糖葫芦,每个字母就是一颗山楂,将它们按顺序排成一串, 而且每个位置都有编号,这个编号我们称为下标或者缩影。从零开始,第一个字母是零,第二个是一, 以此类推。同时, python 还支持负缩影,负一表示最后一个,负二表示倒数第二个,以此类推。 有了缩影之后,我们就可以使用中括号来截取字母串了。先将这个字母串复制给一个变量, text 访问单个字体,就在中括号中写对应的缩影。比如 text 四,访问缩影为四的元素, 也就是字母三采用负,所以就是 text 负六。访问一段字母,则在方括号中写头下标,冒号尾下标。截取时需要注意的是,截取包含头下标元素,不包含尾下标元素。所以如果我们想要截取,三思而后行,这个子串就需要写 text 四冒号九包含下标为四的元素, 不包含下标为九的元素,使用负,所以就是 text 负。六冒号负一。当截取以第一个元素为开头,或者以最后一个元素为结尾时,可以进行缩写。比如 text 冒号二就表示前面两个字母。 text 七冒号则是截取后面三个字母。 除此之外,还可以添加第三个参数,指定截取的不长。比如 text 冒号,冒号二表示从开头到结尾每两部取一个,也就是取缩影零、二、四、六、八的元素,当不长为复数时,就是反向取值。比如 text 冒号,冒号负一,就是将字母串反转。 除了使用缩影访问字母串外,我们还需要掌握字母串的常用函数。第一个内置函数 l、 e、 n, 获取字母串长度,字母串 hello world, 长度为十一。第二个,查找 find, 查找字母串中第一次出现目标子串的缩影。字母串 hello world 中第一次出现。 l 的 位置是二,所以输出二,而 a 没有在字母串中出现过,那么 python 会返回负一。 第三个,替换 replace, 用另一个字母串替换指定子串,这里将 word 替换成 python, 就 会得到 hello python 字母串。 需要注意的是,这些方法并不会直接修改原来的字串,而是返回一个新的,所以 text 值依旧是 hello world, 使用时就需要用变量去接收返回的结果。第四个,拆分 split, 拆分字串为列表, 这里将字母串以逗号拆分结果为一个列表,然后是拼接 join, 连接列表为字母串,这里将列表重新拼接成一个字母串。 split 和 join 一个拆一个和处理文字数据特别好用。字母串的内嵌函数还有非常多, 我整理了一份文档,大家想要的话可以私信我,或者在评论区留言,这个视频就到这里。

特征,下面呢,我们来讲一下最后一种,我们续列的数据类型叫做原组,那么可能你刚听到原组的时候会觉得很陌生, 其实呢,如果大家对我们之前所讲解的列表,无论从它的定义到使用方面已经有一个很好的掌握之后,那么对原组来说啊,大家很快就能把它学会,为什么呢?因为原组和列表两者是特别像的, 那么唯一的一个区别就是我们列表他的内容是可以修改的,我们前面已经讲过了,我们是可以给他增加数据,也可以修改某一个元素的值, 但是原组呢,他是不可修改的,有时候我不能去修改原组里的某一个元素,或者是往这元素里面去追加值。那么除此之外啊,原组和列表的特征是一模一样的,我们看这两个特征啊,最大区别就在这, 那么对于原组来说,它是不可修改的,不可变的啊,那么对于列表来说是可变的,所以说我们就可以认为原组是一个受保护的列表 啊,比如说列表是不可以,是可以修改的,那么当它变成原组之后,它就变成不可修改,只能读取的一个状态了。那么我们通过代码给大家演示一下啊,这个地方我们分别去定义一个列表,一个原组啊, 那么列表定义咱们前面已经讲过了,我们还以内举例子,这时候呢,我们用的是综合号,给它输入几个值,汤姆, jerry 啊,张三,这是我们说的列表,那么原组怎么去定义呢?原组定义的方式, 它是用的是括号,同样里面也是去定义它的元素。大家首先从定义方面来看,是不是两者就很像啊?对吧?两者很像。好,那么接下来呢,我们在使用的时候最大的区别就是圆组, 我们先把它打印出来,然后我们这时候呢可以通过下标的形式去修改它的某一个元素值,比如说我们把这个 tom 换成 tom 一 啊,这肯定是不会报错的,我们打印一下。好,我们现在去执行一下啊, 大家看一下,他并没有报错,而且修改成功,但是原组的话呢,能不能利用同样的方式呢?既然他也是续列,说明他也肯定是有下标的,那我们能不能改值呢?我们改一下啊, 我们同样给他打印一下修改之前修改之后的效果,这时候呢我们运行一下,大家看一下,他就报错误了,为什么报错误呢?因为原组是不可以修改的,不可以修改的,所以说对于原组的一个使用 啊,我们跟列表的使用方法大体是相同的,除了是不能修改以外啊,其他部分都是很像的。那么当你有了一个列表之后,你希望这个列表不能被别人修改的话,那么你可以把这个列表转成原组的形式进行存储啊,这就是原组的一个 最大的作用。那么我们还是简单的把原组的方法给大家介绍一下,那么和列表相同的部分,我们就快速的过一下啊,不同的地方呢,我们重点来讲一下。那首先第一个肯定是如何去创建原组,我们刚才已经做了一个操作了,就是通过括号的形式去创建地方,大家注意一下啊,我们原组是 括号,数组是中括号,这个一定要搞清楚啊,不要写错了,我们打印一下它的类型 啊,打一下类型啊,啊,这类型大家看就是原组这个类型啊,原组类型, 这是一种创建方式,那么同样道理呢,原组它本身也是一个类,我们当然也可以用它的构造方法进行创建啊,那么我们可以把一个列表啊,我们在上面这个列表,我们可以通过列表的方式给它转成原组,这个操作也是我们做的比较多的, 就是列表转元组,这时候呢用我们的构造函数就可以转过来了,那转完的就是不可以修改的了。 第三种方式呢,也是针对于如果你有重复元素的,也可以用新的方式,新的方式我们直接给大家去打印一下,跟上面原理一样,我们也用这个星号去创建重复的这个信息, 比如说我们定一个 t 吧括号有一个值,比如叫 python, 然后我们重复去生成这个 python 元素,把它生成,比如说多次 用星号生成三次吧。啊,那这时候呢,我们得到的就是一个有三个元素的啊,这样的一个圆组,三个 python。 在小镇之后呢,大家会发现一个问题,就是我在定义有一个元素的元组的时候,在后面依然会加一个逗号, 这是为什么好,我们在前面定义列表的时候呢?比如说我们定一个列表的时候,假设他有一个元素, 我也是不需要加后面这个逗号的,大家看啊,这样定义就可以了,但是到了原组这注意一定要多写一个这个逗号,这个为什么要重点解释一下啊,这个地方很容易出错,就是当我们的原组中有单元素的时候,为什么加逗号呢?因为当你不加逗号的时候,他会认为是数学的括号 啊,会认为是数学的括号。我们来看个例子啊,比如说咱们定一个圆组,里面放一个十,对吧?那么如果说你不加逗号的话,我们输出这个 a 的 类型看一下啊, 你看 a 的 类型,什么类型呢?是 int 类型,就是整数类型,因为他会认为这个括号是数学的括号,就相当于是 a 等于 a 等于十了,对吧? a 等于十了啊。所以我们在定义单元素的时候,为了让它变成一个圆组,一定要在后面多一个逗号, 当他多一个逗号的时候,他就会不会认为我们的括号是数学括号了,这时候这个 a 就 变成什么变成一个圆组了,只说这个圆组里面只有一个元素,就是一个十,这点大家一定要记住一下,就当我们创建单元素的时候,把这个要重点写一下,和列表是不一样的啊, 单元素的时候啊,那么我们必须要加一个逗号, 防止他会认为是数学的括号啊,这点大家要注意下啊。 ok, 下面去访问原组啊,这个就比较简单了啊,原组它本身就和列表很像,也是个序列,所以我们访问的时候呢,当然大家就可以通过什么下标的形式来访问了,比如说我们访问一下我们这个原组, 那么大家只要去用下标访问就可以了啊,我们把这个原组给它粘回来, 访问的时候呢,用下标啊,那原理一样,这下标不能越界是吧?这样就可以访问了啊,没任何问题,也可以是辅助负一呢,访问的就是张三,这些跟列表都很像,不重复介绍了。同样呢,它也可以做切片,也可以做切片, 切片操作也是一样的,输入两个值,对吧?有时候输入一个一, 输出呢就是汤姆,这是单个元素,写个二,那就是汤姆,杰瑞两个元素。这句话呢,说一个特殊的地方啊,我们之前可能没讲过,我们说有第三个是增加的量,每次增加几个,对吧?这句话如果写负一的话会怎么样呢? 大家看一下。如果写负一,它会默认起一个倒序的效果,这个特殊用法注意一下啊,就当我们最终这个 type 等于负一的时候,他会起一个倒序输出的效果。这个用法咱们经常会用到啊,这种方式呢,不光对原主有效果,因为我们前面讲的字不串和列表都有这个功能啊。那么在讲字不串列表的时候呢,没给大家介绍这个使用方法啊,这会咱们补一下啊,再补一下这个问题啊。 接下来呢是拼接啊,拼接的话呢,也是用加号,也是用加号啊,比如说我们定义两个圆组,一二三四好,第二个 第二呢是这个 python, python, 然后加 jerry, python 加 java, 这时候呢,我们的拼接啊,直接就是加号了, t 一 加 t 二好,那么这时候呢,就会拼成一个新的圆组,这时候注意啊,这个圆组拼接呢,得是同类型的啊,不要拿圆组去拼一个列表,这肯定是不行的啊,这个一定要注意一下啊,这是拼接的问题,那么我们在使用圆组的时候呢,还有一项操作啊,咱们前面并没涉及这个要点,介绍一下就是圆组的解包, 什么叫原组的解包呢?解包的含义呢,指的就是我们把一个原组它里面的元素赋给多个变量啊,这个过程呢就叫做解包过程。 我们来看一下这个例子啊,比如说我们还是以这个名字这个原组举例,那么现在里面有三个元素,那么我们现在呢,就可以去定义三个变量, 每个变量去取一个元素的值啊,那怎么去做这件事情呢?当然有时候我们下标就可以做到,对吧?咱们写下标,零赋给一个变量,一赋给二赋给,这个没问题,但是啊,它操作起来并不是那么方便,那么怎么来解包呢?这时候我们就直接定义三个变量, 比如说 name 一、 name 二、 name 三,然后等号等于我们这个原组,等于这个原组,那这时候呢,我们输出 啊,这个 name 一、 name 二、 name 三,看一下啊,这时候 name 一、 name 二、 name 三,就变成了三个字母串变量,它分别得到就是原组里面的三个值了,那这个过程就叫解刨过程,就说把我们的原组一次性的元素赋给 多个变量。那么在这呢,有同学就会想到了,如果说我的变量个数不够会怎么样?我们看一下啊,有,当前我们这个圆组里呢,是有三个值的,但是现在我只给他解包成两个值,我们看一下,这时候就会报错误,为什么报错误呢?因为我们包里的值大于了 啊,我们变量的个数,你说有值解包不知道付给谁了,那还有种情况下呢,就如果说我的变量个数啊,超过了原组里面元素的个数,这元素现在有三个啊,我写四个,那会怎么样呢? 一样啊,也会报错这个错误呢,它的含义就是你变量的个数不多于了啊,这个包里的元素个数,包里元素个数不够了,不够,你去解了,一共三个,解成了四个,肯定不够了,对吧?少的话呢?就是啊,他会说你包里的值太多了, 对吧?啊,变量不够用了,所以我们要求这个解包呢,一定就是你变量的个数, 那么一定要和我们原祖宗元素的个数得是一致的啊,这样话才能解包成功。解包成功,只有一种情况下啊,我们可以让它不一致。什么情况下呢?我们来看一下这样一个操作, 有时候现在我们有两个,但是有三个值,对吧?我在这个地方加一个星号。好,那么当你加上这个星号之后,我们再运行啊,你看他没有包错,这时候什么意思呢?这就相当我们在解包的时候啊, 把第一个元素放给内幕一,所以内幕一是一个字母串的变量,是汤姆,这个没问题,星号的含义指的就是我们当前这个变量会收集剩余的多个元素, 有时候它会把我们没有分配的元素统一都给 name 二,这时候 name 二变成什么呢?变成一个列表,因为它里面有多个元素了,它就不能是一个字母词,对吧?就变成多个列表了,所以这是星号的一个作用啊,就是收集 好我们多个元素,这时候你在下面加个信号,就可以解决这个数量不够的问题。好,这种用法用于什么场景呢啊?比如说我们现在想取它开头结尾的值,比如它这里有很多值。好,我们来看一下啊,我们把这个值呢给它增加一下, 比如说我这里有很多值啊,那么我现在只想要到它第一个和最后一个。在解包的时候啊,那这时候呢,我们就可以定义三个变量。好,那我们只要谁呢?我们只要 name 一 和 name 三,那这时候呢,中间的这些值 都给它放到 name 二里去,这时候 name 二圈呢,我们就加信号就可以了,所以最后得到呢, name 一 就是汤姆, name 二, name 三就是王五, 对吧?然后中间呢值都被挤到,谁挤到 name 二上了,可能中间你不需要用。好,那我们用 name 二接一下就行了,你不需要写很多个了啊,这就是信号的一个作用啊,所以在解包的时候呢,其中一个特殊的就是这个信号,信号代表什么呢啊?代表接收多个元素。 多个元素啊,这解包操作啊,咱们后续呢会用的比较多,而且经常会犯错 啊,无非就那两个错误,一个是多的,一个怎么一个是少的啊?这是解剖操作。那么我们前面条对于原组来说呢,我们是不能进行修改和呃增加数据的,所以修改增加这部分啊,就不能做,但是是可以做删除的啊,这个删除呢,也不是删除某一个元素,而是直接删除整个原组, 这样这是删除整个原主,它也不支持你删某一个,删某一个就像它改了嘛,所以它支持就是你可以把整个原主全删了。这个删呢跟前面的很像啊,咱们前面删列表的时候呢,是用的什么呀? dl 来删是吧?那这个地方一样,这个 dl 还可以去删原主,我们把原主名提供给它, 那么这个原组它就被删掉了。看一下。啊啊?这已经输出不出来了啊,这个原组已经。怎么已经被删了啊?已经被删了,这是删除原组,就是你想把整个原组全删了,用的是 d l 啊,但是你不能删除某一个啊,不能删除某一个,因为删掉之后我们就不能再。

part 既然这么简单,第六天 input 语法在 part 中, print 是 我们的嘴巴,能够代替我们说话,而 input 就 相当于是我们的耳朵,可以获取信息,它和 print 语法一样,需要加上括号和引号才能运行。假如你要获取年龄信息, 那么在 input 里面加上输入你的年龄,点击运行,那么就会出现请输入你的年龄,我们输入二十,那么拍成得到数据之后需要进行保存,所以我们要加上变量 a g。 由此可见, input 函数一般都是和变量一起使用,因为拿到的数据需要储存。 接着我们把获得的数据用 print 打印出来,在里面加上你的年龄是以及谁,这个时候运行程序会获取我们的信息,我们输入,而是那么打印得到的结果就会是你的年龄是二十岁。接下来我们搞点高级的, 先命名三个变量 money, 先获取用户目前的存款 shopping, 再获取用户当月的消费,接着命名一个 savings, 等于存款减去消费,最后用 print 写上你消费完后能存元。好,这里要注意,我们 input 分 别获取的数据,在后面预算的时候都需要加上 int, 将其转换成整数的数据类型,这个我们上期讲过,不懂的去看看。 然后我们运行代码,他就会让我们输入信息,我们输入两万,他还会再次获取我们的消费金额,我们这里输入一万二的消费,得到数据之后,他就会打印出你消费完后能存八千元。这个程序的逻辑很简单, 先拿到数据,再进行预算,最后 print 输出结果。那么接下来我们开始今天的实战练习,今天讲两个练习题,第一个是用 input 分别获取用户的名字,收入,年龄,并且打印出来。第二个是根据用户的年收入计算出用户的每月收入。第三个课堂作业,用 input 根据用户的月收入,当收入输入多少时,能够两年来帕拉梅拉,好,我们讲第一个非常简单,先命令变量, name, money, age, 从而分别来获取用户的名字,收入以及年龄。最后用 print 里面加上对应的制服圈,再进行打印即可。点击运行。这里我们依次输入,小张一万八,三十岁, 好,那么他就会打印出用户的名字是校长,收入是一万八,年龄是三十。接下来讲第二个,同样的,用 input 获取年收入。接着明明一个变量来存储年收入,除以十二,得到的就是每月收入。 这样一样的 input 获取的数据要进行匀算,得转换数据类型,在前面加上 input 转换成整数,再用 print 输出每个月的收入是多少。然后 我们运行一下试试现收入,年收入十九万二,他得到数据运算出来的结果就是你每个月的收入是一万六。今天的内容就到这,课外作业记得写下课。

pyxon 基础语法 fstream 字母串格式处理 hello, 大家好,我是陈学木木,今天的话想教大家 fstream 的 字母串的格式化的一个神器。那这个案例呢?其实在爬虫里面的话,包括我们的这一个 web 里面用的是比较多的,我接下来给大家用一个简单的一个案例给大家去演示一下。在里面首先第一个我先准备一个 name, 这个 name 呢,我们给他一个名字,比如说现在的话,我这里的一个 name 是 陈学木木, 好,下面的话给上一个年龄,这里有一个 age, age 的 话这里写上一个十八,呃,相对是我今年十八岁啊,在里面。好,接下来我想把呃里面的支点把它打印输出,那这个地方直接是 print 打印里面这一个 name 啊, 下面这里呢有一个逗号,我把用一个逗号隔开,这里有一个 a 键。我们这里先来看一下鼠标右键点一下运行这个地方的话,他直接是程序木木跟十八,但是我想打印的是,我是程序木木,我今年十八岁,我想打印这种的,怎么怎么去打印?那这个地方可能同学会想的是这种的,第一个我们用一个,我是我是, 后面这里呢,我把那个变量名加到这个里面啊,后面这里有一个逗号隔开,下面这里的话就是我们写上这一个,我今年 嗯十八,后面这里我们也是用到一个 a 键这种形式打印,我们来看一下鼠标右键点下运行这里的打印的话,大家可以发现这个地方只会打印,我是内容里面是 a 键啊,对吧?他没有把这个地方只会打印,我是什么他就打印什么,为什么呢?因为这一个数据的话,他是一个字母串, 因为前面有这种的引号嘛,它就是一个字母串,而前面这个地方的话,它是一个变量名,因为颜色都不一样,这里大家很明显能够看得出来。那我怎么样能够把前面的这个变量名引用到这一个字母串里面呢?那我们就得用到这个支点在里面,那我这里写的话,直接在前面加上一个 f 啊,一定要加一个 f, f 是 固定的,后面这里的话,我们把这个用一个花括号把它括起来在里面啊,你要把花括号括起来在里面后面这个地方呢?我们也要把它用花括号括起来在里面啊,这样子才是对的,在里面里面没有,但这个地方呢,有一个注意的一个事项,就是我们里面这里的话,呃,如果你这里写完,这里就不要加了, 就这样子去写啊,因为前面的 f 必须放在放在一起在里面啊,这样子就是变成这种的一个白色的,它才是引用到里面的一个变量名的,这种就是我们的 f 格式化的一个输出,像在爬虫啊,还有那个, 嗯,很多数据处理当中都有用的到在里面的,所以这个就是我们的一个 python f string 的 这个次序串的格式化的一个处理,它是 python 技术语法里面必学的一个内容在里面。那接下来我把这个代码运行一下,给大家看一下效果,手边右键点一下运行, 运行完之后呢,这里就直接是,我是陈学木木,今年十八,对不对?就直接能够直接引用在里面的,那么这个你学会了吗?

零基础入门 ai 编程一百讲第十五期,今天我们来讲 python 变量的命名规则,你是不是也遇到过这种情况, 让 ai 写代码,结果变量名乱七八糟,不是报错就是看不懂。今天这五分钟,我带你彻底搞懂 python 变量命名的三条铁律,让你跟 ai 写作时,代码一次过,不再返工! 先说清楚,看完这期,你能拿到三样东西,第一,记住变量命名的硬性规则,避免语法报错。第二,掌握 ai 时代的专属命名规范,让代码更容易被 ai 理解。第三,避开百分之九十新手都会踩的命名坑,直接看正确视例, 咱们不玩虚的,全是能立刻用的干货。变量命名是什么?你只需要记住一句话,给代码里的数据贴标签, 就像你给文件命名一样, python 里的每个数据都得有个名字, ai 才能知道你在说什么。先讲第一条铁律,语法硬性规则,这是 python 解释器强制要求的,违反就报错,没商量。以下这些规则必须记住! 第一条,变量名只能包含字母、数字和下划线,注意数字不能打头,比如 user 下划线 name 是 对的, user 一 百二十三也没问题,但一百二十三 user 就 会直接报错。为什么?因为 python 看到数字开头 会以为这是个数值常量,不是变量名。你只需要记住字母或下划线,开头后面随便跟字母数字下划线。第二条,不能用 python 的 保留关键字。什么是关键字?就是 python 自己占用的词,比如 if, else 这些, 你试试, if 等于五肯定报错。怎么避坑?写变量名之前心里过一遍,这个词是不是 python 命令 不确定就用 ide 检查,它会高量提醒你。第三条 python 区分大小写、首字母大写的这个 username 和全是小写的这个 username 是 两个完全不同的变量。这个特性很关键,因为后面讲 ai 规范时会用到。接下来讲第二条铁律。 ai 编程专属命名规范,这部分不是语法要求,但你遵守了 ai 理解,你的代码会更准确,后续调用 api 做重构都更顺畅。 先说核心原则,键名之意加统一风格。什么是键名之意?就是变量名,要直接说清楚它存的是什么,比如存储用户年龄,用 user 下划线 age, 而不是 a 或添 p。 为什么这对 ai 重要? 因为 ai 是 通过语义理解代码的,名字越清晰, ai 生成的后续代码越准确。你只需要记住变量名,要能回答这是什么数据。再说统一风格 编程社区有个约定俗成的规范,叫 p 一 p 八,其中规定变量名用小写字母加下划线, 也就是 snake 下划线 case 这种风格。比如 user 下划线 profile alter 下划线 total, 千万别混用。比如 username, 这里 name 首字母大写是 javascript 的 风格, 不要使用这种不符合规范的风格。这里有个实战技巧,当你要调用 api 时,变量名最好跟 api 字段名保持一致或高度相似,注意看图中的视力。这样做的好处是什么?复制粘贴就能对接,减少拼写错误, ai 也能自动匹配字段含义。 现在讲第三条铁律,避开高频命名陷阱。我选了三个新手最容易踩的坑。第一个坑, 使用中文或特殊字符命名。中文变量名在某些环境下会报编码错误,减号会被当成减法运算符,直接语法报错。第二个坑, 过度缩写只有当时的自己看得懂,三个月后你自己都忘了这是什么? ai 也可能理解偏差生成错误的验证逻辑。第三个坑,命名与实际用途不符, ai 可能会根据变量名推断类型生成错误的操作方法。最后总结一下今天的核心 python 变量命名,主要还是记住硬性的语法规则,这些规则在其他语言中也都差不多的,这也是为什么说学编程语言一通百通的一个原因。 下期内容我也准备好了,主要讲 python 核心数据类型制符串,为什么单拎出来讲? 因为 ai 交互中百分之八十的数据都是区块,处理不好就会出现乱码截断,注入漏洞。想让你的 ai 应用更稳定,下期一定要看,有不懂的在评论区问老黄,给你一对一回复。

盲目自学只会毁了你!这才是抖音最系统的拍算教程,存下吧,全两百级纯干货版,真的很难找全了!警告,本视频耗十三个月制作,制作时长三百分钟,陪你系统的学习拍算,这应该是抖音目前最良心的 入门到进阶的拍算教程了,哪怕你是零基础也能学会。之后呢,会给大家一个小福利,有搭建开发环境资料包,拍算从零到一的学习计划表,只需上百集,素材,书籍、课件等等,只要你能想到的素材我这里几乎都有, 评论留言六六六即可全部免费打包带走,相信我,这套拍照既可塑墙,将会是全网最齐全这一等的小白专用课。如果看到这对你有所帮助的话,请给老师一个免费的一键双联吧,让更多想学习拍照的小伙伴看到这个视频。下一站,上岸,上岸站位于门头沟区,是地铁一线的一座车站,因上岸村而得名,希望看到视频的你们心想事成, 上岸, the next station is 上岸!下一站,上岸!顶峰剑,我们终会上岸! 好,那接下来咱们来看一下这个逻辑运算啊,那逻辑运算呢,在我们以后的开发的时候,用的会特别的多啊,因为它会有效的减少我们使用 if 条件判断的那个层级啊,会有效的减少这个东西。 那咱们先说一下吧,这个逻辑运算有大概这么三个,第一个呢叫 and, 第二个呢叫 o, 第三个呢叫非啊 not。 那 这个 and 的 它的含义先跟说一下啊,含义呢叫,并且你就翻译的时候就把它翻译成,并且然后去理解它的意思,那比方说 啊,我想打游戏,那我需要有一台电脑,并且呢得有电,并且呢得有这个啊,得有网,并且呢我得有账号啊,并且呢妈妈让我玩,对吧?所以这几件事情同时成立,你最终的这个 结果才能是成立的。结果,对不对?所以按的它的含义很简单,就是左右两边同时成立,结果才成立,那这是它的一个特点啊,比方说我这个地方啊,把这个注视掉之前的代码来逻辑 预算,比方说我们可以这样做啊,比方说 true and false, 对 不对?那这个结果很明显有一个是假,那结果呢?就是假啊,就是假,只有两边都是真, 好了,你的结果才能是真啊。比方说我这地方 true and true and false, 好 吧,那结果呢? 就是假,对不对?因为它有一个假,那结果就一定不是假,知道吧?这个是呃 and 它的含义叫,并且那再往下,哦,哦呢?叫,或者,哎,或者或者是个什么含义?比方说我想回家, 那我回家,我可有好多种方式啊,我坐飞机回家,或者坐公交回家,或者坐火车,或者坐公共汽车,再或者开车,这几件事里面,这几个条件里面有一个成立,我最终是不都能到家,对吧?结局都是 ok 的, 所以他的特点就是左右两边有一个成立,结果就成立, 知道吧?只要一个 ok, 那 就结果就是 ok 的 啊,比方说很简单来把它全换成哦, 啊,全换成,哦,好了,此时结果一定是成立的,因为在在这个地方其实就已经能够能够得到结果处哦,吧啦吧啦,你随便凹起,对不对?他一定是处,所以这个东西就是,呃,就是有一个成立结果呢,就成立啊,比方说我再整个极端点的啊, 这样这样这样也 ok 啊,假没关系,看下一个真,不用算了,一定是真,对不对?所以只要有一个成立结果就是真, 这就是。呃, odd 含义,那 not 呢?更好理解它呢?叫非叫非。什么叫非呢?叫非真即假,非假即真啊?就举个很简单的例子,你兜里有一张一百块的钞票,你的一百块的钞票不真 那就是假呀,不假那就是真呐,对吧?所以 not 就是 不啊非啊,一个含义,那比方说简单举个例子啊,很简单的例子啊, not 属于不真嘛。走不真就是什么就是假呀,对不对?不不假呢, 就是真啊,不假就是真,所以这个东西也很也也也很好理解,是吧? ok, 那 这是逻辑预算啊,逻辑预算单独的用起来呢,用法也很简单,比方说我想让你给我来一个用户登录,哎,我让你去给我模拟一个用户登录在这啊, 来模拟用户登录,那比方说你得输用户名吧,对吧?来,用户名。还得有密码吧,来, 密码 password, 对 吧?用户名密码。然后做条件判断嘛,如果你的用户名等于等于 what's mean? 并且你的 password 等于等于 一二三四五六,好了,我认为你登录成功,对吧?来登录成功。当然我这个只是一个模拟啊,就真实的情况下,这个用户名密码不可能这么存的啊。那再往下,否则登录失败, 来试验一下吧,走你用户名我的命, password, 一 二三四五六,走,对吧?这就登录成功啊,登录成功。那如果说走 用户名我输入的正确密码呢?不正确那都不失败对不对?按必须两边同时成立才可以知道吧。所以这个东西就是按的哦。啊 not 经常都是类似这样的一个用处,你会发现我们按照之前的写法来说的话我这个按的是不是得 是得这样啊。那往按之前的逻辑的话得这样那所以你就你就发现你这个程序不拉不拉不拉越洗越深越洗越深对不对。那我就可以使用这样的一个逻辑预算是吧把它们能连的连上对吧。用暗的呀或者凹啊。那具体得看你的实际需要好吧看你实际需要 ok 那 这是 and 哦和 not 一个正常的用法。注意啊这是正常用法。那么接下来要聊的是不正常的用法。各位啊接下来是不正常的用法。当 and 和 or 以及 not 同时出现的时候 最好呢加上括号加上括号不会产生歧义或者不易理解 问题。比方说啊接下来就比较比较比较痛苦了。来我写这么一来嘛 好我就写的很长啊写的很长呃这个很明显正常人不会那么写的知道吧。正常情况下你如果想写的话你用括号把它标起来比方说从这哎到这是一段从这到这是一段就把一段一段的给他标出来拿括号给他括起来 这样的话我们知道哪先算什么后算什么知道吧这这这样的话就不容易出现歧义懂吧。不容易出现歧义但是这么写是符合 python 的 语法规则的。所以接下来的问题是如果真的遇见了这种鬼东西怎么办哇甚至说这里面空隙再给你来个 note 是 吧这个东西就很头疼了。所以接下来的问题是如果非要这么就是就是不按这个这个写,我没有不好怎么办。记住一个运算顺序 先算括号。永远是先算括号然后算什么呢?算 not not 算完了之后算 and 最后数号 最后数号这是它的运算顺序一定按照这个顺序来。那比方说啊,这里面我这里面就没括号,好吧,没括号没括号的话怎么办那我就找呗。先算 not 先把 not 计算完对吧 not 计算完 not 的 话这里面我记得我加了一个字呢有个 not。 那 not 处是什么玩意?各位来再来一行 not 处是什么? to false 对 吧?哎这个就算完了 not 算完了之后算什么?算 and 那 把所有的 and 单独的这个圈圈单独的进行计算比如说,哎,这俩是按的吧。好了那按的话往下算吧 true and false 结果是什么? 是同时为真才可以啊。是 false 吧。好,再往下 true and false 一 样的是吧?再走 false and true 是 吧。所以结局一定是 false 它是 false 所以 这个东西你一定要记住它的运算顺序。好吧,我看它是即兴的啊瞎写的。你可以自己给自己设置一些难度吧啦啦吸力然后你自己算一算顺序就按照这个顺序来,没有问题。好吧,没问题。 ok 这个是我们要要的逻辑运算你需要掌握的一些东西啊需要掌握的东西然后我们这个地方呢还有一些个 呃预算书那些练习题你可以尝试着去试一试啊。可以尝试去试一试当然还有这种数字的,这种数字的只会在笔试里面会出现这里面我就不给各位去去讲了,你要有兴趣自己看。好吧,这个东西正常的程序员写代码不怎么干。好吧,兄弟们,正常代码不怎么干,这不是这个, 这个正常代码不这么干啊,像这个东西你可以拿去算一算,试一试。行啊,这个是这个,你现在是能能搞定的,下面这个现在是搞定的。这个你没有成员这么写代码,这么写代码会会会被会被你的像经理干死的啊。好,那接下来咱们来聊最后一个就是成员啊,成员成员呢?其实之前聊过,就是他和他, 懂吧?这这这个应该应该很很容易理解,就是判断谁是谁,是否在什么什么中出现了,对吧?这个呢,就是反着来判断谁是谁,是否不在什么中出现了啊,这个就快速的举个例子啊,就过了。 嗯,应该大家都很容易理解的东西。来 list 等于中括号,一二三四五,好了,随便怼来 re 一下,来三音 list 走,对吧,它在里面啊,对不对?所以肯定是返回就是出啊,那再走 print, 呃,六六六 in list 走,对吧? false, 那 不在这里面,那还可以干嘛?是 not in 啊,就是取法嘛,基本上你看见 not 这个含义就是不 走,对吧?六六六是不是不在这里面啊?是的啊,所以这个就是,呃,成员预算成员判断你是不是这这这个成员,那这个 范围里面的一个成员啊。好,那这是关于预算符咱们聊的东西啊,讲的算数预算,比较预算、数值预算、逻辑预算,然后还有成员预算啊,逻辑预算里面主要是 and 和 not 这仨玩意,要记住,要记住,我们未来用的会很多啊,会很多。好了,那预算符咱们大致就说这么多,比较简单啊,快速的获得它,再见。 好,那接下来咱们接着说这一节呢,咱们来聊聊文件操作啊,在 python 里面的文件操作是很重要的一个知识点,但是呢,它又非常简单啊,基本上都是需要你记的一些东西啊,比方说我现在准备好了一个文件啊,叫国产自拍是吧?看着很诱惑,但是打开呢,里面是葫芦娃。 那我现在有这么一个需求,我希望你能把文件里边所有的内容呢,帮我给他读取出来。那么我们先思考一下啊,如果说我现在随便给你一个文件,我想让你读取里边的内容,那么你的正常的逻辑是不是应该是第一件事先去找到这个文件,然后双击打开它, 对吧?双击打开它,打开它之后我们才能够,呃,读取到里面的内容,或者说我想往里面写东西,对吧?不管是干什么嘛,你首先第一件事得双击把它打开,对不对?那这个时候 python 里面就准备了一个文啊,一个函数啊,叫 open, open 的 作用呢,就是打开一个文件,但是呢,打开文件的时候就需要你告诉他你要打开的是哪个文件,所以需要有文件路径, 对吧?这很合理嘛,对吧?然后其次呢,它需要有一个模式,在这模式的意思就是你打开这个文件的目的是什么, 对吧?你想是从里面读东西啊?还是想往里面写东西啊,对不对?所以这个是涉及到模式的问题啊,它分为读和写,那还有一个参数叫 encoding 啊, encoding, 这个 encoding 什么时候能用到呢?就是比方说我现在想读取这个国产自拍这个文件里边的内容,并且里边的内容呢,得是文本 啊,得是文本,得是字,得是文字。那么对于文字的话,我们上节课啊,或者之前我们聊过说文字想要存储到文件里边去,它就必须经过啊,编码对吧?咱们咱们有两个编码可以选择,一个是 g b k, 还有一个是 u t f 杠八,对不对?那在拍叉里面创建好的文件默认情况下是什么? u t f 杠八,所以我们 从这里面想把东西读出来,你是不是还得用 u t l 八把它解码啊,对不对?所以这个时候你需要告诉他,你的编码级是什么啊?编码级是什么?对,你的文件是呃 u t l 八的呀?还是 g b k 啊?你就把这门给他就可以了。那这是 open 打开一个文件的一个呃,最基本的一个语法规则。那么这里面咱们一个一个聊。第一个就文件的路径来,各位, 文件路径,文件的路径呢?我们啊就就是通常情况下是有两种方式去往里面放的,那么第一种方式呢?叫绝对路径,哎,绝对路径。第二种方式呢?叫相对路径 啊,这个绝对路径什么意思呢?就比方说啊,各位,你的电脑假设从 d 盘里面我想找某一个文件夹,哎,某个文件夹里边的什么什么文件,对不对?那从磁盘的根部入去寻找的话,这个就属于绝对路径,但是这种路径呢?它不安全。各位, 它不安全在哪呢?比方说啊,我现在假设我想读这个 d 盘里面的 test, 里面什么什么文件啊?然后去执行我程序后续的一些操作。但是你想一个问题啊,你未来的这个程序以后你的这个程序写完了,你是要打包给你的客户,或者说打包扔到服务器上,对吧?那这个时候问题又来了, 在服务器上我们通常选择的是 linux, 你 这个路径在 linux 里面根本就不成立, linux 里面没有地盘,对吧?也就说你给的这个绝对路径,在你的当前正在开发的这个 电脑上是 ok 的, 但是你挪到你的客户里面,他不一定有地盘,他不一定有这个路径,对吧?所以此时绝对路径在你涉及到项目迁移啊,或者说是项目部署啊,哎,这个时候他的坑就出来了啊,所以绝对路径咱们用的少。 那么第二种方式就枪相对路径。何为相对路径呢?就是相对于你当前的这个程序而言,你要找的那个文件他在哪?哎,比方说啊,比方说就像我们这个这个这个呃,人啊,人人站在这个这个地球上, 对吧?那么相对于当前的这个人而言,哎,你想找那个东西,可能在你的前面,在你的后面,左面或者右面,对不对?这都是相对于你当前的位置而言的,对吧?而那个绝对路径呢,就好比说是经纬度 啊,那个经纬度经度多少啊?东京多少多少啊?北纬多少多少啊,对不对?就是相当于这个东西啊,所以这里面我们的这个这个相对路径,基本上就是相对于当前你的程序所在的文件夹 啊,当前这个程序所在文件夹,那么咱们当前的这个程序在哪呢?各位说,在这呢,对吧?幺零文件操作点 p y, 那 么我想找到这个,就是这个文件相对应的这个国产自拍这个文件,我想把它读出来,那么此时它俩是不是在一个文件夹里边啊?对吧?就好比说,你和 张三被关在了一个房间里面,你还想找张三帮你干什么事?你是不是直接喊他的名字就够了?所以此时我们就可以直接去找国产自拍点 p 叉 d, 因为你俩在同一个文件夹里边,在一个屋子里面,知道吧?所以此时我想打开这个文件,我就可以这样做, open, 打开,打开那个文件呢?叫国产, 哎,对吧?这就可以了,那我这样的话,就可以,哎,找到这个,顺利地找到这个文件,但是这个文件如果它不在这个文件夹里面怎么办?比方说我在外面新建一个文本, 叫葫芦娃点 t 叉 t, 对 吧?里边随便写点东西。比方说,呃,这个,这个,这个,中岛美加啊,中岛美雪,这个,这个,这个真 叫什么?一休吧,一休哥,对不对?我想读这个文件,哎,此时注意看了啊,我们两个不在一个房间里了,不在一个文件夹里了,那怎么找呢?你当前的程序在这里,那么我想找到 这个程序所在的文件夹以外的这个文件,对不对?以外的这个文件,那此时我是不是得首先得从这个文件夹里面出来呀?对吧?就好比说,你想找我隔壁的某个人,你是不是得从我这个房间出去你才能找到他,对吧?就好比说,你想找我隔壁的某个人,你是不是得从我这个房间出去你才能找到他,对吧?就好比说你想找我这个葫芦娃的时候,我们就得这么做。 open, 从我当前这个房子里面出去点点,到这个叫返回上一层文件夹,哎,返回上一层文件夹,那么此时是不是相当于从这个文件夹里面就出来了?出来之后我是不就能直接看到葫芦娃了?对,直接找葫芦娃, 对不对?此时就 ok 了啊?此时就 ok 了,那我们把它跑一下啊,当然什么都没有啊,不报错就可以了,不报错就可以了,证明这两个文件是可以读取到的啊。你要说这样怼, 你看,他就给你报错了,他告诉你这个文件不存在,对吧?你也不可能打开它,所以这个地方不报错,证明我这个,哎,路径没有问题啊。所以这里面又多了一个知识点,叫点点吧,他表示的是上一层文件夹, 哎,上一层文件夹,那么此时问题来了,如果我想找的那个东西他不在,哎,不是在他上一层,是在他上一层里边的这个零一里面,哎,在这个零一里面。零一零一零一代码里面吧。 来,随便起一个啊,叫倚天屠龙记是吧?那个忘给后缀了点 t 叉 t, 然后里面写上那个孙悟空大战。呃,赵敏。好吧, 甭管张无忌乐不乐意啊,先干着再说。那此时我想找到这个文件,我想找到这个文件,那么此时跨度是不是有有点大了?各位,我此时我的程序是不是有有点大了?各位,我想找到这个文件夹里边的东西,那么此时你要研究一个事, 研究研究一个事,我是不是首先得从这个文件?因为我现在在在这个文件夹里面吗?得从这里面,是不是得出去啊?出去之后干嘛?是不是还得进到这里面来,然后再进到这里面来,然后在这里面才能找到我的目标啊,对不对?所以就是就就是就是,一层一层去找。那我现在真的想找怎么办?刚才说了第一件事,我是不是得出去?好, 来点点 go, 先出去,出去之后是不是就到这了?从这是不得进零一是吧?初识 python 这个文件夹呀,所以是零一,它有自动提示啊,然后再再打开,进去之后再找什么?找代码,然后才能看到倚天屠龙记,所以还得进代码, 然后再找倚天屠龙记,是吧?来,再运行,再运行,来再运行, 对吧?此时程序没有问题啊,程序没有问题,所以我们的路径啊,基本上就是这么一个玩意,那路径有了,我现在整个这个这个 open 也没问题了。那么接下来老师你能不能给我讲讲怎么去从里面把东西读出来啊,对吧?毕竟这个国产自拍这个四个字啊,还是有一定诱惑力的,对吧?我想读里边的内容,那怎么读呢?各位?对了,此时我能 open, 那我们刚才讲已经都 open 了, open 的是那个。呃,国产自拍点 t 叉 t 好 了,路径有了,那么接下来就填第二个参数吧。第二个参数叫什么? mode 模式是吧?模式 mode 等于 那个模式啊,它是这么一个玩意的 mode, 它的取值啊,它的取值。我们先大概的轮廓的先给各位讲一下,第一个叫 r 啊, r 表示什么意思呢?它的全称叫 read, read 翻译过来叫读取,那么我现在想要的不就是读取东西吗?对不对?所以直接就可以了, 哎,就可以了,它可以了之后再往下还有第三个参数, encoding 啊。 encoding, encoding 的 这个参数呢?可以给可以不给,但是我推荐所有人在读写文本文件的时候一定要给拷定 啊,你读写的是图片,你就别给了,图片没法去编码,知道吧?所以是文本你才能给拷定。那我现在这个文件是 utf 八的,所以,那走吧, u t f 杠八啊。 u t f 杠八,然后打开一个文件,打开了之后目的是啥?是读东西,对吧?那我得把它给上一个变量,哎,给上一个变量叫 f, 那 这个 f 呢?表示的就是被打开的这个文件啊。但其实此时啊,此时并没有说把整个文件咔 扒开,把里面东西全加载到内存,并没有,它其实是这样的一个逻辑,我给你们讲一点就是,这是我那文件,这是我那程序,那么这个 f 等于 open, 相当于什么呢?相当于你,这是你的,这是你的程序啊,你看,这是你的程序, 字儿丑点儿啊。然后呢,这面儿是文件好了, f 等于 open, 相当于你这边儿,哎,插了根管子,哎,插了根管子,并且呢模式是 r, 那 么模式是 r, 就 决定了这根管子的流向是不是从这面儿往这面儿走啊, 对吧?你的程序要读东西吗?对不对?所以此时管管道的这个这个流向确定好了,所以这个 f 相当于就是这根管道,哎,就这根管道,那么我想读的话,就从这个管道往里方向读就可以了,知道吧?哎,那么为什么我在 open 的 时候没有说把整个文件全加载到内存呢? 很简单,那个文件有多大,咱们这控制不了,对吧?你想的那个文件如果有十个 g, 对 吧?或者说一百个 g, 各位,你们的电脑有几个人能内存达到一百个 g 呢? 对吧?所以它不可能一次性把一个文件全加载给你,它就给你插根管子,你用的时候从这根管子里面读就完事了啊,那怎么读?很简单,直接 print, 别 print 了, content 等于 f 点 read, read 什么意思啊?读取,那此时我们就可以 print a content, 对 吧? print a content, 看看能不能读到东西。 葫芦娃,葫芦娃,一根藤上系的话,是吧?数据就读取出来了。所以我们想读一个东西,特别简单啊,各位可以去先练习一下,然后我们再去强化一下读,到底有哪些种读的方式?现在很简单,现在康熙以下全读出来了。还是那个问题,你的文件如果有一百个 g, 你 能这么读吗?兄弟,肯定是不行的,是吧?谁的脑能怼一百个 g, 是 吧? ok, 那 关于文件操作的这个读,咱们暂时先说到这,咱们下一小节接着讲读取文件。 好,那上一节我们学会了,呃,怎么打开一个文件,怎么去啊?去,去写它这个路径的问题,对吧?然后呢?以及最简单的一个读取,哎,我们直接一次性把文件里面东西全都读出来了,但是还是那个问题,你这个文件如果很大哎,有十个 g, 有 二十个 g, 那 此时你这么读肯定是不行的,一次性内存就炸了,所以怎么办呢?哎,在 python 里面还提供了一些其他的读取文件的方式,比方说,哎,我们读的话,这是全读啊,全部读取,哎,我们还可以这样,来去 读去来, f 点 read, 你 看啊,有这么多了, readable 就 不不提了。好吧, readable 就是, 是不是能读出东西来啊? readable line 要读取一行,哎,我们来实验一下啊,这一行是个什么玩意啊? line 等于 print line, 走, 葫芦娃,对吧?这一行就出来了,但是呢,这个地方看好啊,一行再去接着读,对吧?这是第一行,这个应该是第几行了?第二行了,走,葫芦娃,葫芦娃,哎,这这这两个葫芦娃重合了是吧?再来一行, 走那葫芦娃,葫芦娃,一根藤上七朵花,是吧?我这个数据呢,哎,可以一行一行的读,也就是说你打开一个文件之后,他相当于那根管子插哪了?是不是插在他那个文件开头了?读一行往下走一点,读一行往下走一点, 对吧?就可以这么哎,反复的去读,哎,反复,就这么一个一个一个一个去读。那么读完了之后,我们发现一个问题,我们在打印的时候,这这葫芦娃为什么占两行呢?都,哎,为什么他占了两行呢?其实这个东西啊,不太好解释,而且容易蒙啊,我快速的给你想办法给你解释一下,比方说,我打印,呵呵哒, 再打印,么么哒,来,各位,我们就考虑这两个玩意,就能把这事说清楚,看着啊,我们再打印,呵呵哒,然后再打印,么么哒。那么各位,我们可以看到打印的时候,呵呵哒自己占了一行,么么哒也占了一行,那说明个什么问题呢?说明 print 的 时候每次 print 它都会干嘛呢?进行一个换行对吧?你打印完,呵呵哒,换行再打印,么么哒,再换行, 对不对?所以也就意味着这里面 print 内部存在一个换行,对吧?打印完之后啊,会帮你进行换行,那他既然这里面有一个换行了啊,那接下来我们来看我这个文件,我这个文件叫葫芦娃,然后是不是也换行了? 在葫芦娃又换行了,也就是说文件读取的每一行,哎,读取的这么一行,在这一行的末尾这个地方,他有一个换行符号,在这 一换行,哎,到下一行了,再来下一行再换行,知道吧?所以这里面有一个换行符,隐藏在每一句话的末尾,那么也就是说你从文件里边读取到的内容,它默认是可以进行换行的,哎,它里面内容自己是可以换行的,但是你 print 是 不是自己还有个换行了, 就这样了,对不对?那怎么办?我们可以这样做,在你从文件里面读取到的那个换行,我们先加上一个 string, 之前讲字母串的时候让你们重点记和 script, script 能干嘛?是不是去掉字母串左右两边的空白,当时这么说吧,那空白包含着什么?包含着空格换行,还有什么?这个这个制表符, 就这些玩意全部给它干掉,那我加个 si, 是 不是就把换行符干掉了,对不对?哎,那我们来试验一下啊,怼上怼上,全都怼上,走,你看这文件里头是不是一模一样,对不对?所以这里面啊,你要想着点这个这个文本啊,后面的这个这个看不见的这个地方,它有一个换行符在这啊,那怎么能?能能能看见那个东西呢?哎,有一个办法能看见, 注意了, content 等于 f 点 read 览思,哎, read 览思,那 read 是 全部都读出来, read 览是一行一行读,那么还有一个叫 read lance, lance 什么意思 啊?是不是所有的很多行,对吧?很多行?好啦,我康怼上一个 read lance, 那 默认情况下,它会把所有的你这个文件里边的每一行都拿出来,然后放到一个列表里面去,所以此时我们打印 content 实际上是一个。什么?是一个列表,哎,走 啊,是个列表,哎,这个时候你是不是看到葫芦娃后面跟了个杠 n 了?葫芦娃跟了个杠 n 了,看见了吧,所以啊,这块啊,兄弟们,这个地方默认是有一个换行符在这啊,杠 n 就是 换行符,哎,杠 n 就 换行符, ok, 那 么此时呢,我们就基本上知道了啊,我读文件呢,可以 read 全都读出来, read 烂一行一行读,还有一个 read 烂四, read 烂四就全一次性全都读出来,放到一个列表里面啊。所以从这个点上,我们其实基本可以确定这一些个东西里面哪个重要。各位,肯定是 read 烂,重要。 瑞的烂中,因为还是那句话,他和他都无法解决一个问题,就是你的文件好几十个 g, 怎么办,对 吧?他能解决,他能解,他不会让你的内存炸掉,你一行不至于说好几十个 g 吗?哎,所以此时我们就说读取文件很重要的一个操作叫瑞的烂。那么还有一个问题,还有个问题,我现在想把文件里边的内容啊,一行一行一行读出来, 哎,一行一行读出来,那么各位, word 烂是不可以办到,但是这个文件里面如果有个百八十行,你总不能写百八十个 word 烂吧,对吧?那怎么办呢?拍子里面还提供了这样的一种读取方式,也是最重要的一种文本读取方式,必须掌握 啊,不讲道理的必须要掌握,那我此时很明显,对吧?就是肯定是全新的了,对不对?那怎么办呢?想想啊,我读一行拿出来,再读一行又拿出来,再读一行又拿出来,它读点是不是有点像循环的一个操作,对吧?所以 python 里面直接就告诉你,这个 f 可以 被直接循环,所以直接 for 小 于 in f, 哎,直接就可以循环这个管道,从那管道里面一行一行的往出读,一行一行的往出读。那么这里面的 line 啊,这个这句话的解读就是,从 f 中读取到每一行数据, 读取到每一行数据。来,我们看一眼吧,打印一下这个 line, 好 吧,打印一下,走。你看,那个问题又来了,又是又又是,换两行嘛,对不对?为什么换两行?因为你没加语句 走,对不对?哎,数据都拿出来了,此时不管你文件里面多多少个东西,对吧?啦啦啦啦,一直拉,随便拉,想怎么拉就怎么拉啊,痛痛快快的拉来 走。哎,是不是还是能读取啊?所以此时相当于一个很公共的很很很套路的一套操作,就读取文件的方式,对吧?直接 follow link e f 就可以了。那么这个是我们说想读取文件里面的内容最重要的一个方案啊,最最最重要的一个方案,把这个给他记下来,把这个记下,记住文件的这个 open 是 可以直接被循环和便利的啊,把这个去理一理,理完了之后,咱们接下来准备去讲讲怎么往文件里面去写东西,是吧?来,咱们这些就说到这。 好,那接下来咱们来说说往文件里面怎么去写东西啊?那用的模式呢?叫 w, w 的 话呢?基本上各位能猜到啊,它那个单词叫 right, 那 叫写,叫写。那写的话,我们来试验一下吧,把这个注视一下啊,在这块,呃,这个地方也注视一下,在下面呢, 我们要假设啊,现在瞎写一个,哎,叫国产自拍之后我再写个啥呢? 嗯,好吧,写个这玩意好了,接下来模式的话呢,肯定是 w 模式,对吧?然后,呃,给上一个自负极一拷定等于 u t f 杠八啊。但是各位请看啊,我这里面并没有这个文件,讲道理吧,没这个文件,那没这个文件是什么样吧?走你, 哎,你可发现没报错,对吧?然后我们看这边,哎,你可发现他帮你创建了一个啊,这么一个文件出来。所以此时我们基本上可以断定一个事,就是 w 模式下, 如果文件不存在,那么会干嘛?会自动的创建一个文件出来啊,自动创建一个文件出来,那么如果说这个文件已经存在了,比方说,哎,这文件之前已经准备好了,那里面写上 啊,葫芦娃大金刚,哎,再来个孙悟空好了,文件现在里面有东西吧?有东西没关系,我跑一下看到了吧,来,再看这文件,你就发现里面东西没了。所以这个就是第二个问题,就是 w 模式下 啊,模式下,那么每一次 open 都会清空掉文件中的内容。 注意啊,每一次 open 都会清空掉文件里面的内容啊,就说白了,他必须保证,他一定会保证你的那个文件里面是空的,只要你 w 模式里面一定是空的,没有的话帮你创建,有的话清空。哎,那么接下来往里面写点东西吧,还不点 write, 随便写一个,比方说胡辣汤,好吧,写个胡辣汤,哎,我们来试验一下,走你 那,没事,他那头,后来他们就写进去了,对吧?也很简单啊,也很简单。那么这里面还有一个坑啊,各位,还有个坑就是我们每次文件操作完之后啊,都需要进行一个 close, close? 为啥 close 呢?你想啊,之前我们聊过这个 open 是 什么意思呢?你这是文件,这是你的程序,对吧?每一次 open 是 不是相当于在这 插根管子过来,对吧?那我下一次再读,哎,再插管子,哎,每一次操作都插管子,那么最终想象一下,你这个文件是不是千疮百孔啊,对不对?哎,就对程序来说不好,哎,对程序来说不好,所以此时我们尽量的,哎,每次操作之后养成好习惯 要关闭链接啊,关闭链接,我上面其实这个习惯就不好,是吧?没关。所以呢,希望我的这个这个这个问题不要在你们身上再次发生啊。好,那这是我往文件里面写东西,接下来,哎,我们来看这么一个小小的案例啊,有小小的案例就能说明出很多问题,比如说 准备一个列表,要求把列表中的每一项内容写入到文件中,哎,比方说我现在准备好一个列表里边呢,随便放上一些人, 那这个张无忌、王峰,章子怡,赵敏,好了,我现在让你把这几个东西给我写到文件里面去。那怎么写呢?很简单,首先还是得做准备个文件呢。哎。 open, open 一个。呃,叫什么呢? 打架,点 t 叉 p, 好 吧,然后我们模式呢?想往里面写东西肯定准备的是它,然后你扣定呢?默认我们还是跟着 u t f 杠八啊,然后 f 点 right, 那 right 的 话,是不是应该是列表的第零个,然后列表的第一个,再来列表第二个,再来列表第三个,是吧?最后 f 点,可逗比 啊,走好了,没问题,多了个打架里面张无忌、汪峰、章子怡,赵敏,对吧?数据写出去了,但是这个数据现在是连着的,我希望你能帮我把它分开。怎么分开呢?很简单,在每一个后面加上一个杠 n, 对 吧?杠 n 就 完事了。杠 n, 杠 n, 杠 n, 或者这么写其实不够优雅啊,因为如果里面有有数字的话,你这个就报错了,是吧?怎么办?会优雅一点呢?还有点 right, 嗯,是 f 点。呃, right, 你 来写吧。 杠 n, 我 这是新键盘啊,所以找键子有点费劲来,每次写出去的时候都加上一个换行,哎,走, 没问题,看这个对吧?哎,一行一行一行的就出来了,所以我说每一个,呃,就是我们之前说的,这里面每一行后面都会默认跟一个杠 n, 明白啥意思了吧?因为我写的时候也要写一个杠 n 出去,对吧?好,那接下来问题来了,我如果这个列表很长呢,几百个数据 不能那么行那么慢,肯定是要上循环了,对吧?循环,把列表里边的循环啊,把里边的每一项拿出来往外写,写完之后再跟着一个 n 是 不就完了?所以我的循环体型就这么两个玩意,哎,把它推下去,其他东西全部干掉,再见。然后给它套上一个循环否?烂啊?否?烂,去了否?艾特么 啊?英历史的是从列表里面循环出来每一项,把每一项给我写出去,是吧?来,走。 哎,数据依然是可以写出去,但是此时听好啊,有很多同学,尤其是新手啊,新的小伙伴们容易犯这样一个错误,他把这玩意写在这, 哎,把这玩意写在这,写在这,这个程序就可怕了。可怕在哪呢?你仔细想一想,循环出来一个数据, 是不是就 open 一个,哎,再循环出来一个呢?再 open 一个,再循环出来,再 open 一个,对不对?那你就说,有多少数据我就要 open 多少次,并且每一次是不是都是 w? 那 么此时你想想啊,我一 open 就 把数据清掉,一 open 就 清掉,你后面写什么是不是都没用啊, 对吧?比方说第一个张无忌出来了,打开这文件往里面一写,写完之后呢?哎,再循环,又 open, 刚才这张无忌是没了,对吧?所以此时你只有最后的赵敏,哎,赵敏写出去之后,循环结束,对吧?就赵敏留里头了,你看呢? 你看呢?就算你照明了,后面还跟了个这玩意,是吧?还跟了个这玩意。所以此时你会发现,这么干是不行的,所以一定要切记,尽量的,但是得看需求啊,大多数需求都是你需要把 open 写在循环的外面,尤其是 w 模式。行啊,这是个坑。各位啊,这是个坑。这东西 啊,我不敢说百分之百啊,但是大多数情况下是这样的,来,再走 来,数据正常写出来也没有什么问题,所以我们一般情况下都是这样的逻辑啊。好,那这是关于 w 啊,就往外写,写出啊,往文件里面写东西这么一个逻辑,基本上是 w 模式。那还有一个模式也是写叫 a a 呢,翻译过来叫 a p n, 它叫追加,写入 追加,写。什么是追加,就往后面去写,接着写。那他俩的区别什么呢?他是接着写吗?不是,他一写是先把其他东西全干掉,那他呢?就是原来东西还在。哎,我在你屁股后面接着往后写,叫 a 模式。简单的给各位去演示一下啊,比如说打下,就这个文件了,往里面再去写住一些东西 来 f 等于 open, 打开一个。呃,文件叫打架,点 t 叉 t, 然后呢模式我选择 a 模式啊, a 模式这个是逗号,想点了该给的引扣定,还是得给 f 点。呃,随便写一个吧。 right, 你, 你好厉害,来,试验一下。走, 没问题,上文件里面看见打架,你好厉害,是不是写错了?哎,这就是我们说 a 模式,它不会把原来的数据给清掉啊,它是一个追加的一个效果啊。 ok, 那 这是文件的往外写的这么一个基本的操作啊。然后我们在这里面呢又灌输了一个新的思想,就是每一次我们操作文件的时候呢,尽量的都要进行个 close, 但是你会发现,对吧?乔峰老师每每次操作完好像都容易忘掉这个 f 点 close。 哎,那么为什么会这样呢?哎,注意了,我们接下来要讲的那个语法呢,就可以让你不写点 f 的 可逗字,它也会自动的帮你去关闭。那,那下一节我们接着聊。 好,那接下来咱们来介绍一个全新的一种写法啊,对于文件操作而言,那么 python 里面还提供了一个叫位子的啊,它呢,就如果真的把它翻译过来的话呢,叫上下文啊,叫上下文。那么位子用位子这种方式去打开文件的话,它的优势呢?就是我们不需要 手动去关闭一个文件啊,就是上节课咱们不聊了吗?你想去往文件里面,从文件里面读啊,还是往文件里面写呀?最后你都要怼上一个 and close 啊,目的是说你要把那个文件的连接给它关闭掉,那这个时候呢,如果有了位子这样的语句的话,其实就省掉了这句话,所以你知道我为什么总忘这句话了吗?其实我通常用的都是位子空格后面跟上你要打开的那个文件, 比方说我还是想从这个,呃,国产自拍里呢,哎,读取到内容啊,读取到内容,那么模式依然是用的,呃, 读取嘛啊, encoding, encoding, 这个 u t f 杠棒。那然后后面我们跟上一个 i s f 啊, 这个 i s 就 很有灵性。首先我们之前聊的这个文件操作都是 f 等于 open, 是 吧?现在呢?给他翻过来了啊,给他翻过来了,用位子修饰之后给他翻过来,翻过来之后你看到了一个全新的词叫 i s 啊,那其实跟这个等号的含义差不太多。 紧接着末尾呢,有一个冒号,我们之前用的 if, 什么什么玩意儿,跟上一个冒号是不是都要一个缩进呢?哎,表示的是你后面写的代码是属于这个 if 里边的。那一样的道理,我们看见冒号了,再往里面写东西的话,就需要进行一个缩进,哎,就会有一个缩进,表示你在打开这个文件的状态下,你要去做的一些事情,叫上下文。 哎,这个东西,那就是比方说我们去读内容吧,哦, line in f print, 来 line 点 strip 可以吧?那就在你打开这个文件的条件下,我们去做这种事情,哎,当你这个事情做完了,哎,文件就会自动的帮你进行关闭,所以我们就省掉了什么 f 点 close 啊,就可以省略到这个事情了。来,我们看一下现在的程序 来,一定行,看见了吧,里边的东西还是能够正常的读取的,但是我读取完了之后,我在位子外边,如果我写了这么一个 f 点 read, 你 会发现程序会报错。走, 看程序报错报个什么呢?叫 i o 啊, operation on close file, 就 说你在一个已经关闭了的文件的啊, 这个这个链接上你又进行 i o, 就是 读写操作,不可以了啊,不可以了,因为你一旦离开这个位子就已经完事了啊,就已经完事了,就文件已经关闭掉了,你不能再做其他操作了,哎,就这么个意思,所以位子啊,我们用的会比较多。然后接下来我们再去补充一些个知识点啊,比方说 我现在想读取的文件啊,就我们之前讲的全都是正常的文本文件,那现在我现在想要读取什么呢?图片啊,我想读,读取图片怎么来读?那这个时候注意了什么位置? 来 open 打开,比方说我现在准备了一个啊,一个大美女吗?胡一飞,那我准备好这文件,我想读取它怎么读呢?那这个时候还是文件的路径是吧?胡一飞 来胡亦菲,那胡亦菲点接地, e g, 那 这个时候注意了,我要读取的是一个什么文件,是不是一个字节儿里面,对吧?图片嘛,这玩意哪有文字啊,对不对?所以你这个时候就会产生这样一个问题,首先模式,你在进行设置模式的时候用读啊,用读没问题,但是你这个 encoding 能不能给一个?来, encode, 能不能给这样一个图片?图片在在计算机里面存储是不是也是二进置啊?但是那个二进置跟你的编码有关系吗? 没关系,因为它就是一个杂乱无章的 r 进去它,它不是文字,它没法进行编文,文字上的编码,所以 in coding 不 能给。 in coding 不 给,那么就证明意味着你当前读取的这个文件,它被称之,为什么呢?叫非文本文件。注意,在读取啊,读写 非文本文件的时候要加上 r, 哎, sorry, 叫叫 b 啊,加上一个 b 来, b 模式又来了个新玩意,来,上,上面给他做一个简单的补充。那么 b 这个模式来,它表示的是你读写的 是非文本文件啊,就不是文本,就是什么视频呐,音频呐,对吧?哎,这些玩意你就可以拿 e 来进行读起,那么它表示读取的是非文本文件,非文本文件读取到的是什么呢? surprise, surprise 就 自己人是吧?那我们来试验一下吧。 哎,强行从这里面读吧。来, s f 加 f f 烂进 f, 你 也可以这么干啊。来,虽然它没有烂的概念,但是我们也能 强行打印出来,你看,全是杠叉,什么什么玩意知道吧?所以就是字节,但是这个字节呢?你又不能对他进行编码操作,不可以做编码操作,因为这个是杂乱无章的字节,其实就是零幺零幺零幺啊,就是零幺零幺零幺。那么接下来,接下来我现在想做这么个事情, 我想把胡亦菲啊,从这个文件夹,哎,当前不是这个文件夹吗?我想把它复制到零一,哎,复制到这里面去怎么办呢?那么想想啊,我想完成文件的复制, 文件的复制,那么此时想想我的逻辑,是不是应该从原文件中读取内容,然后把是不是写入到新路径去,对吧?写到一个新文件里面去,所以我们应该是这样做来位置来 open 读, 是不是从这个这个原文件,就这个胡亦菲这块进行读啊,所以读的话应该是胡亦菲,胡亦菲啊,从这里面去读, sorry。 胡亦非点 jpg。 然后呢?模式应该是刚说完他是个图片,是吧?图片的话应该是 w 啊, r b 是 吧? r b, 那 么读取到的给他放在 f 一 里面去,那么注意,我要从这里面读读,读出来的东西说写到一个新文件里面去, 对吧?所以接下来注意了逗号,哎。 open 一个新文件,那给上一个路径吧,点点杠,然后进到零一 python 里面,然后呢?叫胡二非,点 jpg。 好吧,阶梯 e g。 那 么这个时候我要往里面是不是写出去啊?就从这里面读出来,是往这里面去写啊,所以接下来模式应该是什么? 就是 w b 了,对不对?然后接下来 s f 二,那么此时你会发现,哇,这一行代码写的好长啊,我能不能把它串一下?可以的,看好啊,在这个位置, 公鸡敲,我回车,一敲回车,你会发现这个地方给你报错了,哎,这个地方给你报错了,我把这个 pass 该写上了。写上啊,这个地方给你报错了。为什么呢?因为 python 程序咱之前讲聊过,它是个解释型的语言,它是一行一行的读, 读一行一行的执行,读一行,执行一行,那么你看读到这一行的时候,他怎么执行呢?他没法执行,因为这一行的末尾,正常来讲,位子后面是不是应该是冒号啊?各位,但是此时是个什么?是不是个逗号啊?语法不完整,对吧?怎么才能完整呢?是不是把下面这一行跟上面这一行拼起来,是不是就是一个完整的?哎,排成正常序了,那怎么办呢?加上一个 这个方,哎,加上一个杠,一个杠,这个杠。在这里面的含义是,下面这行代码和上面这行代码是一行,代码是同一行,哎,同一行,那我把它往后 敲了敲了,让往后敲了敲了,那接下来各位,我们就知道了,哎,从这里面可以读,那就是否烂耶? f 一, 然后呢?读取到的内容写到 f 二里面去,所以 f 二什么都不用管点。 right, right, right, 把它写出去就完事了,哎,就完事了,我们把它跑一下啊,走, ok, 程序运行没有问题。看,这这边就多了个胡二飞,点开是吧?还是他?这是胡一飞,这是胡二飞,对不对?哎,两个,呃,这个,这个图片,哎,就算操作完成了,那么我们想进行文件复制,我们已经可以实现了,对吧?其实很简单,就是 你把文件路径给我,那你把要把这个文件复制到哪去,对吧?把这两个路径给我,我就能帮你完成复制。哎,任何东西都可以操作啊,都可以操作,你们可以回去好好的去试验一下,这个东西还是挺有意思的啊,挺有意思的。 然后咱们这一小节暂时呢,先说到这,那么简单,各位说一下下一小节,那下一小节我们现在可以把文件进行复制了,那我现在想对文件里边的内容做一定的修改,哎,应该如何来完成?那么下一节咱们来讲文件修改操作。 好,那接下来咱们来聊聊文件修改操作啊。那提前呢,我准备了一个人名单,哎,里面张三李四,王二麻子,周杰伦,周星驰,哎,这些人,那我现在的需求是, 你能不能帮我把姓周的人的名字给我改成姓张,哎,比方说周杰伦改成张杰伦,哎,周星驰叫张星驰啊,周润发叫张润发。那么此时怎么来做呢?注意,在 python 里面并没有直接的提供啊,文件的修改操作的这样的 api 就 没有啥啊,像读一样啊,或者写一样的,这么简单,给个 r, 给个 w 就 完事了。那 我现在还真的面临了这样的需求,我们应该怎么来做呢?各位,最简单最直观的方案就是,首先把这些东西全部给它读取到内存,对吧?全部读取内存,然后呢,一个一个的进行一个替换,做成替换嘛,对吧?直接 replace, 把姓周的改成姓张的,很简单,但是你把这个东西改完了之后,再存回文件就可以了。但是问题是 还是那句话,你的文件如果有十个 g, 你 怎么办?你的文件有一百个 g, 你 怎么办?你不能全都读出来啊,对吧?那此时势必得想办法读一行改一行,读一行改一行,但是操 python 里面并没有提供啊,又能读又能写的操作, 对吧?并没有提供这样的操作,但是,呃,就怎么说?他其实提供了,但是那个没法用,那个东西根本没法用,叫 r 加 w 加那种模式有,但是没法用,相信我,没法用的,那此时怎么办才好呢?注意,我们可以这样来做啊,各位可以这样来做,这也是我们在处理一些大文件的一个很好的一个思路。 假设这个是我的原文件,哎,我的原文件,那么接下来我把这个啊,比方张三读出来,读到我的这个程序里边来,这是我的程序,那么读到我的程序呢?在程序里面给你进行一个修改,改完了之后呢,我把它写入到一个新文件里边去, 哎,写不到一个新文件里面去,就这么以此类推啊。李四也是拿过来,然后呢?呃,就写过去。王二麻子,周星驰啊,这个周杰伦都过来,过来之后一通操作,哎,一通操作,操作完了之后呢,就给他写到一个新文件里面去。注意啊,我这里面是新的文件,那么写到新文件里面就就势必会形成这样的一个效果啊,就张三李四, 王二麻子啊,然后是这个,这个张杰伦,杰伦,杰伦,然后呢?张星驰是吧?然后张润发是吧?后面我就不写了,以此类推是吧?这个新文件里面应该是长这个样子的。注意啊,这个地方是我的原文件啊,叫 reos, 叫 reos 吧,那这个是我的新文件,我们给他起名呢,叫 new 啊,叫 new 新文件。那么接下来注意看了啊, 我把原来的这个文件删掉,删掉,删掉之后呢,让我的这个新文件给他改个名,不叫这个,这个这个 new 了啊,改成你改个名,那把它删掉啊,改个名给他改成叫 s, 那 么如果这个过程足够快的话, 特别快歘。一瞬间,哎,你想象一下,是不是对对外界而言,是不是好像在原来的文件里面做的这个操作, 对吧?这个过程如果足够快的话,是吧?我们就相当于说在原来的这个文件里面操作了,因为我们文件名还是叫 s 啊,对不对?哎,东西呢,是我们改之后的一个效果呀,对不对?所以这个过程才是文件操作最最最最根本的一个操作。我们平时用到的一个叫 word 东西,各位, word, 哎, word, 我 们每次一操作 word 是 不是就会产生一个 word 的 副本文件,对吧?产生一个副本,然后呢,每次我们一 ctrl s, 一 保存的时候,你会发现这个副本它没了, 对吧?但是我告诉你,很不幸,副本其实还在,是你的原来的文件他没了,副本变成了原来的文件, 知道吧?是这样的一个逻辑啊,是这样逻辑,所以我们文件修改操作应该是这样的一套逻辑啊,这样的套逻辑就是该修改修改,只不过把东西写到一个新文件里面去,写完之后就修改完了之后把这个新就这个这个原文件删掉,让新文件 重新起名字,起个原来的名字,这个过程如果足够快,这个事是怎么办的?哎,我们来试验一下啊,试验一下来,在这个地方我们准备一个这个东西, 快,文件修改操作啊。文件修改操作,那么我们的需求是把文件中的周给它,给它过,换成 章。那怎么办啊?第一件事,得从原文件里面读取到内容是吧?所以跑不了这个位置。 open 打开的是人名单,点 p 叉 t, 然后里面跟上模式,应该是读,对吧,然后该有的是吧,该给的尊重啊,该给的 respect 还是还是要给的 来 s f e, 对 吧。从这里面读取到内容,读取到内容做修改吧。修改完了是不是还要写出去,写到一个新文件里面去,所以我们直接就准备好。 呃,这地方还得有个逗号啊,还有逗号, ok, 那 么接下来 open 打开的话,应该是哪个就是新文件了?人名单注意了啊,人名单跟上一个副本文件,那么此时的文件没有啊,得创建呢。那模式应该是 w 对 吧? in coding, 该给的尊重还是要给的啊。 upl 八 s f 二 对吧?那从这里面读内容吧。那 for line in f 一 读取内容,读取到内容是不是得做个判断呢?你是不是姓周啊?那如果烂点 s, 哎, sorry, 差点就差点就就中招了啊。 line 等于烂点 strip 对 吧,该处理的处理一下啊,该处理的处理一下。处理完之后来如果烂点 start 啊, starts with 啊,叫做周啊。如果你是姓周的, ok, 那 么此时慢点 replace replace, 把这里面的周给我换成章,对吧?换成章好了,做替换, 做完替换,你要是这么写,你百分之百报错啊。不不不,是报错就是修改不成功,因为字母圈不可变,你必须得重新赋值,记着吧。必须重新赋值,哎,差点中招了啊。这个是去掉换行, 那这个地方呢?是干嘛?是修改对吧?就这个把周换成张好了。修改完了之后是不是要写出新文件,是不是写到这里面去啊,对不对?所以接下来在这个位置啊,因为不管你是不是姓周,我是不是还得就就张三李四王二麻子,你是不还得给人写回去啊?所以 f 二点在外面啊。 f 二点 right 是 吧?把烂再写出去,写完了之后别忘了 f 二点 right, 再把什么换行,是不该给人写回去,还得给你写回去啊,对不对?那这样一操作完走 好了,此时是不是有个人名单?副本,你看打开是吧,张三李四王二麻子还在,那么张杰伦,呃,张星驰,张润发是不都在啊?那此时接下来的操作才是咱们这个真的要重点,这些聊的东西就是我们进来的事,是不是需要 删除原文件,对吧?然后呢?把这个副本文件重命名成什么原文件,对吧?就说白了,把他干掉,把他重,把他后面这两个副本两个字干掉 就完事了。所以怎么来做呢?我想删除一个文件,怎么删?在 python 里面你必须要写这么一句话,写在上面啊,那上面叫 import os, 这个是和操作系统相关的 模块引入啊。 import 导入,导入,把 os 模块导进来,我用它,懂啥意思吧?就好比说,呃,你你你想,你想用, 你想,你想用铁丝,那你是不是把铁丝给拿过来啊?对,倒进来一个道理,把那 os 倒进来,倒进来之后怎么去用它?拉到底下那 os 点瑞木就删了,瑞木就删了,我想把谁删掉?是不是把原来的文件删掉啊?把它给我删掉好了。把它给我删掉。删完了之后我是不是还得把这个副本的 这个玩意是不是还得给它去掉?把它把这个文件重新命名成上面这个,那上面这个被删了嘛,对吧?那怎么办? o s 点 rename, rename name 叫命名, rename 叫重新命名。把谁重新命名就把这玩意给我重新命名了。好了,把这玩意翻过来重新命名。命名成谁命名成 原来的文件吧,对吧?哎,这个时候整个操作就完成了。来,我们把这个,呃,这个副本删掉啊,暂时先删掉,防止他干扰咱们,对吧?我刚才说过,如果这个过程足够快,你其实肉眼是看不见这副本的啊。这过程如果足够快,你是看不见这副本的,我们来试验一下。走, 刷就完事了吧。看人民的是不是都变成勋章了,对不对?因为这个过程实在太快了啊,实在太快,非常非常迅速的一个过程啊。那我们想如果真的想看见这个变化的过程呢?我们也可以 导入一个另外的模块叫 time, 他 是跟时间相关的啊,和时间相关的模块啊,和时间相关的模块。那怎么能看到呢?贪点 sleep 睡上个三秒钟,然后呢?再睡上个三秒钟,哎。然后这个时候我需要就是到这个这个这个这个 就是文件夹,系统里面能看到效果,拍上面你们看不到他有延迟啊?他有延迟?那 time sleep 是 什么意思?他是让程序休眠三秒钟啊,程序正常跑着跑到这,给我停,停三秒钟之后再走这一趟,再走这又睡了三秒钟,然后再去做这件事,咱们就能够很直观的看到这个过程啊,当然前提是我得上 这个地方啊,到你的这个文件夹系统里面来看这个事啊。来,我们来把它跑一下,然后观察一下这面的变化啊,这面是周,原来不是周吗?对吧?好了,我把这个重新跑一下走, 看这是不是多了个副本啊。三秒钟之后原文件没了,来,三秒钟之后又重重新命名名了,哎,这个就是文件操作的文件修改操作的一个过程啊,一个过程。把这个东西好好的去 捋一捋啊,捋一捋,因为代码对于新手而言可能有点乱啊,有点乱,你好好捋一捋我每一句话做了些什么事啊?好,那这是关于文件操作各位必须要掌握的一些东西啊。那简单的去回顾一下是吧?回顾一下, 呃,第一个事就是打开文件。 open 文件的路径分为绝对路径和相对路径,我们用的多的是相对路径,那相对路径里边呢?两点杠表示的上层语言,那模式呢?表示你打开这个文件目的是什么?是为了读还是为了写还是为了什么?什么其他的事情,哎,就给它一个目的,那再往下一个后定表示的是如果你读取的文件或者写出的文件是一个 文本,那你需要点上字幕级,到底是 u t f 八还是 g b k, 你 自己选。当然默认情况下我如果不写这玩意儿,默认情况下它是有字幕级的。在 mac, 就 我这台电脑上默认是 u t f 八,那你们各位, 我们是 windows, 上面默认是 g d、 k, 好 吧,所以这个我的建议是你读写文件这种东西,该加的一定要加上,防止出现各种各样的乱码问题,好吧,然后再往下这个模式呢, r 是 读, w 是 写, a 是 追加, b 呢?是飞文的文件就是读的读,写操作的是 bios 啊,就你就记住了, 只要你处理那玩意,他不是文字,那你就用就把这个带成这个 b, 好 吧。然后位子的这种方式呢?它是文件的上下文,不需要我们手动去关闭一个文件啊,不需要手动关闭一个文件,那如果我在读取一个文件的时候还可以干嘛呢?是用负循环啊,用负循环也可以去进行读,一行一行的进行读,然后我们这一课主要聊的是文件如何进行修改, 对吧?修改文件,那么我们要做的事情是第一件事,从原文件中读取内容,然后第二件事,在内存中进行调整啊,调整就是修改的过程啊。修改,修改完了之后,第三件事,把 修改后的内容写入什么新文件中,写到新文件里面之后,最后一件事情要干嘛呢?要删除原文件,然后将新文件 啊,重命名,重名文件,哎,就完事。这是整个修改文件的一个过程啊,那文件操作里面最主要的操作就是这些啊,还有一些其他的操作,如果你很感兴趣,对文件操作很执着的话,你可以按住你的这个电脑上的 ctrl, 键盘上的 ctrl 按钮,然后你看我这个地方一滑动,是不是就有有这个下划线了,哎, 我们一点击 open, 这个就是 open 的 源码啊,源码,因为 open 它属于是 build ins, 就是 python 的 内置函数,那么它的真实代码呢?呃,有可能是拿 c 写的啊,那它就不在这里,你看不到,但是对于 open 的 参数,它都会有很详细很详细的介绍,非常非常长,包括你看这模式里面 r w x a b t 加 u, 是 吧?就很多很多, 这就是这这种方案,知道吧?所以呢,你可以去读一读,看一看,有兴趣的就看一看,没兴趣的直接过。好吧,直接过,我可以很负责任的告诉你,我讲的这些玩意基本上够利是了。基本上够利是了啊。好,那这是关于文件操作这块跟各位要去分享的东西,咱这节呢就说到这,谢谢各位。