粉丝115获赞2617

今天带大家三分钟学修,学完所有编程基础。我们输入 print hello world, 点击子星后,屏幕上就会显示出 hello world。 如果你想输出别的内容,只需更改引号内的文字,无论是中文、英文还是其他语言都可以。 我们打开 part 看一下效果,控制台上就可以输出我们要的内容,那么这个时候你就学会了 print 基础。但有一点要特别注意,在 print 语句中,括号和引号都是必不可少的,缺少任何一个都会导致程序无法运行。 下面我们继续学习 input 语句的用法,它主要是获取数据的,不过输入的数据需要被保存下来,这就涉及到了变量的概念,比如我们可以定义一个变量, a 等于一万五, 那么 a 就 代表了一万五这个数值。通过 print a 便能在屏幕上输出一万五。接着我们可以用 a 等于 input 输入你每个月的收入来获取用户输入的信息。点击运行就会显示让你输入收入。同样的来到劈叉,我们运行一下看看效果。 这里让我们输入收入,我们随便输入一个数字,他就会存储起来。如果说你想存三个月买电脑,那么就得到这样一串代码, a 获取用户每个月的存款, b 等于存款乘以三个月。这里要注意,三乘以 a 需要在 a 前面加上 i, n, t, 因为它们数据类型不一样,需要进行转换再计算, 再用 print 输出三个月的存款。运行以后,它显示输入金额,我们输入三千,它就会打印三个月能存九千元。 尽管这个视力看起来基础,但历劫其中的逻辑对于掌握编程思维非常关键,得到数据我们就可以判断,如果你想三个月买苹果电脑,价格是一万五,如果能够存够幺五零零,就答应可以买苹果电脑,否则就答应不可以买电脑。 得到的代码就是这样的,我们运行一下代码,输入四千,运行得到的结果就是不可以卖电脑,输入五千,运行就会得到三个月可以买苹果电脑。这个时候恭喜你学会了一副 判断语法,喜提来了,如果说你今年过年前要买一台车,价格是五十万,请问你十个月收入要达到多少才能买呢?用代码如何表达,可以发在评论区一起交流。接着我们学习如何制作一个随机点名系统。 开始之前,我们需要先学习列表,先命名一个列表,您等于这里要用括号包裹起来, 里面存放上人名,用英文逗号隔开。列表也可以单独用 print 获取,不过是有位置的,从零开始, 一二三排序的。如果我们需要获取这个,就输入 print a 三,就可以获取我们要的人名。接着来到 pr, 我 们导入随机模块, input 导入模块, 导入 random 随机模块,再把我们刚刚的列表放进去,最后再用 print 输出,在内幕中任意取数据。每次运行得到的名字都不一样,那么恭喜你学会了制作一个随机点名系统。如果说你最近也在学习 python, 这里一起交流。

一天一个 python 知识之拍叉 m 激活,接下来下一个就是需要安装拍叉啊,也就是我们需要写代码的一个工具,那么这边的话我们就来安装一下这个拍叉,那需要说明的是拍叉的话呢,呃,先肯定得先下载,对吧?这边下载的话一般是从官网下啊,这个是官网页面, ok, 可以 看一下。 然后的话呢,下载的时候需要注意,就是目前呢这个排查,他目前只有一个版本,下载的就是统一版本,但这个有问题。什么问题呢?就是他这个版本的话呢,如果你要下载,下载完之后安装的话呢,他是默认会给你一个月的试用期啊,一个月啊,在这 一个月试用期,一个月之后的话呢,这个功能部分功能就锁上了,用不了了,所以这个会很坑,那么你需要破解,但是目前最新版的二五版是破解不了的啊,他这个目前没有这个解决方案,所以的话呢,这边优先推荐选择下载二四版的,也就是来我们选择其他版本点这啊, 然后呢选择二零二四版的啊,在二零二四版你自己选一个版本,比如说我这个,我用的话是这个二零二四点一点七啊,就这个版本,好吧,好,我这个影片下好了,这儿啊,安装包在这里 呐,二零二四点一点七的版本,然后你自己可以下一下,只要是二零二四版的都能破解,但如果说是二零二五版就破解不了了,这个注意下。 ok, 行,那么接下来我们讲怎么安装,安装的话呢,同样的方式,先双击安装包啊,进行启动。 好,这个相对来说快一些。选择是,然后进入到这个安装引导界面,我们选择下一步,这里的话是安装的一个路径。呃,如果你觉得有必要改你就改,如果,呃没必要, c 盘工具够,那就不改。好吧,我们就默认了。好吧,下一步, 然后这里的话呢,桌面图标这个肯定需要的,然后环境变量这个也需要了,至于剩下两个的话呢,看你自己需要,我一般不勾选。好吧,然后选下一步,这个话是不动改动,然后直接选安装,接下来就等它读调就好了。 好,这边的话我们就安装完成了,这里点击完成即可。好吧,完之后的话呢,会在桌面上创建一个那启动图标,那么这就是我们要运行的一个工具了,好吧。 ok, 首先的话先启动一下啊,双击 这里需要先说明,目前我们安装的是一个专业版啊,它是需要付费的,但是的话呢,我们可以用一些方式来进行破解。好吧,这个先选择三十天试用,选择允许 好,这个点不了是吧?没关系,关掉即可。关掉,它已经启动过一次了,接下来下一步的话呢,我们找到这个激活工具。呃,先对它进行一级啊,这是个压缩包,这压缩提取 好的,然后的话呢,在压缩包里边找到有一个叫拍叉的激活工具啊,就这个,然后双击运行,这里提示成功,是吧?已经激活到二零九九年了,二零九九年大概还有个六七十年吧,够了啊。行,那接下来话呢,我们再重新启动它应该就可以了。 那你看现在就没有这个激活界面了是吧?就已经破解完成了。好,这个还是比较简单的。然后其次下一步我们就来创建一个项目啊,你自己可以指定创建一个,比如说,呃,就这个吧,名字也不改了,直接 create 创建 好,我们给它全屏吧,这个界面太小了,然后这里会读条,读条的时候不要乱动啊,等它读条结束,然后再进行操作,否则可能会导致你运行报错。好吧,注意下。 那接下来的话呢,顺带我们再讲一讲就是关于它的几个注意事项。第一个就是关于这个界面的问题。呃,目前的话,它这个界面是一个英文版的界面啊,所以的话呢,用起来可能不是那么方便,那么我们先把它改成中文的版本,怎么做呢?在 file 里边找到设置 settings 啊,然后在 settings 里面的话呢,我们来选择这个插件选项,这个叉列在这里面呢,搜索一下 x 例子 啊,然后找到这个插件,它把这个简体中文插件好,然后点击 install, 回一点。慢啊,这个要等一下好装完了。然后呢重启一下你的排查,重启 ide。 ok, 我 们稍等一小会儿。 好,重启完成。那么接下来话呢,你再看这个界面是不全是中文界面了,对吧?就没有英文了啊,看起来会舒服一些了。其次第二个就是我们这个界面的大小可能有点小,你可以调整一下来,我们找到外观与行为,然后找到外观 啊,在外观里面的话,找到这个使用自定义字体,把它大小从十二,比如说改成十六,好吧,十六应该够了,选择应用,那么你看这样的话呢,这个界面的字它就会变大一些,是吧?我们确认一下,看一下, 呐,这个字是不是变大一点了?之前那个很小,现在大一点,但如果你觉得还小,还可以继续加大,把它改成十八也可以。好吧,看你自己的需要。然后其次第二个就是我们新建代码文件来做个测试啊,比如说我们新建一个代码文件 test, 是吧?好,这个界面调整一下,太快了。看这个,看来在这里面的话呢,我们输个代码,比如 print, 嗯, hello, 这个 word 是 吧?好,然后运行一下, 那运行是没问题的,对吧?那么这里的话呢,不过需要注意点,就是这个字也很小,如果你觉得这个字小,可以严禁调整。怎么调呢?在文件找到设置,然后呢找到它的编辑器,在编辑器里面找到它的字体,然后呢把这个数字大小调大一点,它默认十三,对吧?改成二十 确定,那这样的话呢,这个字就会大一些,看着舒服点。好吧?行,那这是关于拍叉的相关的设置啊,使用就可以了。 nice。

python 编程中有一个常常被忽略但实用性极强的关键字 assert。 它的作用机制很简单,检查指定的条件是否为真,若条件成立,程序正常执行。如果条件不满足,则会抛出 assertionary 异常,在调试验证代码逻辑时极其实用。 它的基本语法为 assert condition message, 其中 condition 必选不,而表达式是你需要验证的核心条件 message 断言失败时的提示信息可以省略。我们来看一个简单的代码案例,代码首先定义一个变量 x, 并赋值为十,使用 s 二 t 关键字来判断 x 必须是正数,条件成立,正常运行,若条件不满足,则会抛出异常并提示。 需要注意的是, a 四二的仅适用于开发或调试阶段的内部逻辑会被直接忽略,因此核心业务逻辑绝对不能依赖 a 四二的。

拍照提示你解释器无效该怎么办?写的代码无法运行又该怎么办?明明和别人的代码一样,却报错,遇到了 bug, 我 们应该先检查哪里? 嗨,我是小木,这个视频我将告诉你如何正确使用拍唱,并且告诉你如何在自己报错的时候检查自己的代码。如果你在使用拍唱的时候遇到了问题,不妨看一下这个视频吧。 当你看到解释器无效的提示,或者未配置 python 解释器时,先别慌,这通常意味着 python 找不到 python 解释器了。解决的方法也非常简单。 如果你的 python 编辑器出现了这样的情况,那么我们可以选择这个直接配置 python。 如果你没有这些按钮,你也可以在这个右下角找到添加新的解释器。 选择添加本地解释器,然后找到你 python 解释器的位置,放上就可以啦。如果你不记得你下载的 python 解释器放到了哪里,那么你也可以在键盘中按下 windows 加 r 键, 在弹出的窗口中按下 c, m, d, 然后按下回车,在这里输入 where python, 然后按下回车键,那么你就可以找到你的 python 解释器放在哪里了。因为我有两个 python 解释器,我们可以选其中一个来配置。 找到了 python 解释器之后,我们点击这个确认,现在我们的 python 解释器就显示正常了,并且我们能够正常地运行这些代码。但是你是不是还遇到过这样的情况, 想要运行 python 代码的时候,运行按钮变成了灰色,右击也找不到可以运行的选项。你的拍照到底怎么了?其实这个问题非常简单,但是新手却经常出现 无法运行的原因就是你创建文件的方式出现了错误,写了代码的文件不是拍摄文件。 正确创建文件的方式应该是这个样子的。大家可以看到,在这里我的运行按钮是灰色的,右击也找不到可以选择的运行按钮。 这是因为我创建的是一个 t s t 文件,并不是拍摄文件。很多同学习惯在创建文件的时候直接选择这个文件, 写上了文件名。比如说 demo 零一按下回车键,那么你创建的是一个 t s t 文件,并不是拍摄文件。如果想要创建拍摄文件,那么必须要选择这个拍摄文件,或者你在创建文件的时候写上点 p y, 这样才是创建的 python 文件。只有是 python 文件,才能够被 python 解释器运行执行哦。除此之外,你是不是还出现过在 python 中运行代码?答非所问。 例如,你想要运行这个 demo 文件里面的 print hello world, 运行这段代码,出现的应该是 hello world, 但是输出的却是 hi python, 这是咋回事儿?这个时候你就要检查你运行的是不是当前文件啦。 如果在这个地方出现了别的文件名,那就要小心说明你运行的是这个文件,并不是当前文件。我们只需要点击这里选择当前文件,然后再次运行, 就可以正常的运行当前文件了。除了以上这些,可能是因为我们不够熟悉 python, 导致我们没法正常使用 python 来学习 python 之外,真正学习 python 时,写代码遇到了错误,我们又该怎么办呢? 代码报错时,不要被满屏的红色吓到了,要学会看报错信息,这是成为程序员的核心技能。例如这段代码中我少写了一个括号。运行这段代码,大家可以直接看到这个红色的最后一行,它出现了错误,提示 这一行它会告诉你到底是出现了什么错误,并且通常在这里还会提示你在哪一行出现了错误。 比如说在这里就是这个括号没有被关闭掉,我们只需要添加上这个括号就可以啦。如果你的英文并不是很好看,不懂这个括号 was never closed。 括号没有关闭,也可以登录了微信之后,按一下 alt 加 a 键进行截图, 然后将它翻译成中文,这样你就知道是括号没有被关闭,所以出现了报错,那么你添加上就可以啦。 运行这段代码的时候就成为了正确的代码。除了漏写出现的错误,还有可能是因为你的中英文符号或者英文大小写的问题。比如说你使用了中文的括号或者引号,这些问题也会导致我们的代码报错。 大家要注意观察,在拍照中,中文的括号和引号会用波浪线提示你,还有可能是你的 print 大 写了 print, 每一个字母都需要小写,大家也要记住这一点。 为了避免自己因为这些原因报错,我们使用拍照的好处就出现了。比如说我想要使用这个 print 函数, 我只需要在 python 文件中写下字母 p, 你 就会发现 python 弹出了弹窗,有许多对应的函数名可以给我们选择,我们只要选择我们想要使用的函数,然后按下键盘中的回车键就可以了。 这就是 python 中的代码补全功能,让你完全不用记住每个单词的字母。现在你会使用 python 了吗?是不是发现 python 既可以提示你代码错误的位置,还可以帮你写代码,非常的方便呢?只可惜拍唱舞专业版只能够试用三十天,那么大家想要一直使用拍唱舞学习拍粉肯定是不够的。但是大家也不用担心,我给大家准备好了激活码,大家在安装好拍唱舞之后, 可以将激活码解压之后放到桌面上,然后点开找到拍唱激活,出现这个弹窗 success, 我 们就可以使用拍唱到二零九九年啦! 以上就是关于拍唱使用的所有内容,如果你还有关于拍唱的问题,也欢迎在评论区留言或者放上完整的截图来问我。当然你觉得这个视频对你有帮助的话,拜托一定要点赞收藏哦,我们下期再见!

大家好,这里是树木科技,我是小莫老师,接下来给大家介绍 python 中的另外一种数据结构字典 dictionary。 我 们先来看一下字典的概念, 字典是 python 的 一种数据结构,它由键和值啊,键的英文单词就是 key, 值的英文单词就是 value, 成对组成,每个键与值用冒号分割 啊,这个是键啊,这个是值,大家看一下它们中间呢,用冒号分隔,键值对应的语法如下,大家看一下键名和值啊,键名和值,键值对和列表类似,大括号表示字典操作符啊,大括号, 我们列表大家还记得吗?用的是中括号,那圆组呢?我们用的是小括号, 每个键值对之间用逗号分隔,大家注意啊,就这个这个逗号 键可以是任意数据类型啊,比如说我们这边的键啊,它是字母型啊,等会后面会讲,它这边也可是逻辑型啊和数值型,值得可以是任意数据类型和数据结构 啊,比如说我们这边的是列表,对不对啊,其实它也可以是圆组,那接下来我们来实际操作演示一下, 我们先定义啊,我们这下面的一个最基本的一个字典,我们给它命名为 data 啊,这边输 入小林,小梦小林 啊,然后接出的是逗号。好, 我们选中之后呢,点击鼠标右键啊,运行一下, 大家可以看到啊,我们这个变量的名称是 datac, 那 它的类型呢?是 d i c t 啊,就是 dictionary 的 一个简写 啊,这它的值,那这个这边呢,我们还可以点击双击一下,大家可以看到啊,里面有两列数据,是 age 和 name, 我 们可以看到 age 和 name, 它对应的数值类型啊,都是 list, 那这边我们特地说到啊,键可以是任意的数值类型啊,这边我们复制一个啊,比如说给它迭台一,比如说这边我们将 name 啊,我们改为, 比如说十一,我们改为啊数值型,我们来选中运行查看一下, 打开看也是可以的,对不对?我们甚至可以给它改为逻辑型 啊,是不是也可以啊?同样值则可以是任意数据类型和数据结构。那这边比如说我们把 age 这边啊,它原来是列表,对不对?我们的数据结构呢?我们前面还学过, 学过原组 tuple, 我 给它改一下啊,运行一下,来看一下 age, 它变成了 tuple 啊,它的数据结构啊,可以是任意的, 那接下来我们来看一下限制定义,字典并没有数据类型的限制,键与值都没有数据类型的限制,但是字典中键是唯一的,如果出现重复的键,那么前面的键对应的值就会被后面的键对应的值所覆盖啊,这边我们也来演示一下, 这边呢,我们再复制一个字典,我们给它命名为 date。 二, 假设啊,我们再增加一个键啊,但是呢,它跟前面啊是重复的,对不对? 但是我们这个这这个里面列表的内容呢,我们改一下 二五二六二七啊,大家看一下它这边写的,如果出现重复的键啊,后面的键会覆盖前面的键,那我们来运行查看一下, 来看一下。最后啊,最后它保留的 age 是 二五二六二七,也就是前面的键这个键是被覆盖。我们接着往下看访问 字典,通过中括号内加上键名来访问字典中该键对应的值啊,语法为字典变量名键名。那第二可以使用 case 函数来访问字典中所有的键,也可以使用 values 函数来访问字典中所有的值。那我们来看一下 访问 啊,比如说这个 data 啊,比如说我们要访问 age, 对 不对?我们可以这么输, 选中啊,我们运行查看一下啊,我们就可以查看 age 里面的值, 还有啊,就是说我们如果说我们要看这个啊, data 这个字典啊,里面所有的键啊,应该是有 age 和 name 啊,我们怎么去做呢?我们可以这么说 啊,我们用 kings 函数,大家看一下啊,都会返回啊, name, age, 同样我们要来访问字典中所有的值啊,就用 values 函数 啊,都会返回查找, 因为字典中分为键和值两部分,因此需要在字典中查找某个数据,先要确定要查找的是键还是值,然后再通过使用硬操作符来判断要查找的值是否存在于键或值中。 我们接着上面的访问来看 查找 啊,比如说我们想看 age 啊,它是否在我们的键里面,对不对?那我们可以这么输, 大家看结果是处啊,因为在我们的啊,所有的键值里面呢,它就是有 age 啊,比如说你输个这个是不存在的,对不对 啊?它会返回 false, 那 前面我们之前运行了啊, data 点 values, 我 们返回的是小明,小木,小林,还有这个对不对?那这边我们输入,比如说我们想看二十一 啊,这是我们的值,我们来看一下所有的值里面,你会发现它返回的是 false, 那 我们怎么输才是正确的呢?我们可以输入一个列表 啊,这个时候大家看一下啊,它返回的结果就出啊,二一二二二三,这个列表啊,它就存在于啊,这个返回结果中间 增加啊,字典中啊,增加键值的语法如下,大家看一下,字典变量名,键名啊,等于值 啊,假设我们这个字典,我们要增加,再增加一个性别,对不对?再增加一个性别啊,我们可以这么写 啊,字典变量名 data, 那 我们增加性别, 那还是输入列表, 那么运行查看一下,因为大家看一下 data 之前是这样的一个状态,那我们运行一下, 看一下是不是增加了,增加了一列啊,性别。接下来我们看一下修改字典中键值,对的,修改语法与增加语法是一样的, 比如说我们刚刚增加的这个性别是 male, male, female, 对 不对?大家看一下,那我比如说我们想把第一个 male 改为 female, 那 我们可以这么去改, 我们的运行查看一下,再看一下这边啊,是不是就改掉了, 那最后一个是删除啊,如果想删除字典中不要的键值,对,删除语法如下, 比如说这边我们刚刚增加的啊,性别,我们想删除,对不对?我们可以这么写 啊,字典变量名,然后键名啊,我们运行查看一下,大家看一下这边啊,是不是就删掉了姓名就删掉了。 本次课程呢,我们给大家讲解了 python 中数据结构中间的字典 dictionary, 我们讲解了字典的一个定义,限制访问啊,查找,增加,修改,删除啊,以上就是本次课程的内容,课后呢,希望大家多思考,多动手练习。

你听说过偏函数吗?在编辑派送程序的过程中,你可能会遇到这样的场景,需要反复调用同一个函数,但每次调用都要传入一批重复的参数,如果每次都手动传参数就很麻烦。这时候就轮到偏函数登场了,它的作用是固定函数的一部分参数。返回一个新的函数,后续调用这个新函数时, 只需传入未固定的剩余参数即可。偏函数的实现方式很简单,通过调用派送标准库 function 中的 pass 函数 r g s 表示想要提前固定的位置参数, t word 则表示想提前固定的关键字参数。举个简单的例子,如果需要高频处理二进制字串转整数,用偏函数能大幅简化代码。 这里需要特别注意,偏函数不等同于函数默认参数,两者之间存在本质区别。默认参数是定义函数时提前设定的,参数值固定且全局生效。偏函数是在原函数定义后要用前由使用者动态创建的,可针对不同场景生成不同的简化版函数,灵活性更高。

好,各位小朋友们,大家好,接下来我们继续对 python 的 函数做一个总结。 首先我们讲的函数的定义,函数是可以重复使用的,用来实现某个功能的代码段,那这个代码段它有个特点,可以重复不断地被调用。那怎么去调用?直接使用函数的名字加括号就可以调用了。如果函数名字后面没有加括号,并不代表调用,只是代表函数名这个函数本身者的对象。 好,那定义函数的我们也讲过了, df 后面接函数名,括号里面接参数,当然也可以没有参数,包括后面的代码了,要缩进,缩进代码才代表是函数里头的代码,如没有缩进代码的,那就跟当前这个函数的无关。 接下来就是函数的参数有四种参数,必要参数、默认传参,还有一个关键字传参,还有一个不定强传参。 那函数的访问值,函数的访问值很重要,不是函数的访问值,尤其你要记住 return 后面那句话,就是 return 一 直行,整个函数就会中断。 这句话最重要,很多的小伙伴往往可能经常忘记了这句话,感觉好像 return 执行完之后,后面的代码还会执行,那就不对了。好,有没有 return, 函数都会有一个返回值。接下来最后是局部变量和全变量, 局部变量是在含义函数内部定义的变量,只能在函数内部使用,那局部变量是在函数外面定义的变量, 那所有函数类其实你都可以用这个变量。用是可以用,但是你要用之前, 你要用之前,或者说你要修改之前,你需要干嘛?你需要加个轱辘,轱辘其实应该是主要是修改之前再加入这轱辘,如果你仅仅是用一下,我们不修改它,其实我们不加轱辘也是可以的。好吧,不加轱辘也是可以的,好,轱辘这个关键词,它是一个拍死中的保留字。 接下来我们要给大家讲一个易错题了,这个易错题其实跟我们这个函数的整个函数的结构以及函数的传餐有一定的关系。这个易错题很多初学的小伙伴们经常容易搞错 啊,这个代码非常简单,这个代码了我就不写了,我直接复制回到我的拍叉文中,新建一个新的批号文件啊,取个名字,二十六 处的一错题。好,我先把这个函数写出来,对函数我给大家讲解一下,不是特别难。一、 text 这个函数名字,它有两个参数,一个参数是叫,我们叫叫 b 传参数也叫什么?也叫未知参数,还有一个参数叫 l s t。 一, 它是缺省参数,或者叫默认有默认值的参数, 它是有默认值的,它默认值是一个列表一和二,列表里面有一和二,知道吧? ok, 那 代码里头也很简单,这里判断一下,如果 a 不 在我们的这个列表中,那我就把这个 a 添加到列表里头,添加列表的后面,对不对?最后我返回这个列表, 就访问这个缺省的参数,知道吧。这代码不懒,相信每项代码都能看得懂。接下来我们要讨论的容易搞错的是什么?在函数不同的调用的过程中,你会发现它的仿值跟我们想象中的不一样。来,我们先看第一个, 我们直接打印错了不认者,第一次调用 test 的 函数的结果?是啊,我在这调一下 test, 在 调的时候传参数,我只给 a 传一个参数,传个多少了?传多少?传个十,传个十, a 传个十,这个十是传给了 a 了,这个十是传给了 a 了,那传给了 a 之后,请问这个 a 是 多少?对, a 就是 十了吧,那么 lst 是 多少?因为你没传,那它就是默认值, 所以最后各位他返回的打印的结果是多少?我们先说一下这个打印的结果,他打印的结果列表里面应该是什么?他打印的结果是一个列表,列表里头是什么?是一逗号啊,在后面追加了一个十,这样子的一个结果。来我们看看这个我相信大家都能看到,没什么问题。好,我们现在是第二次调用 text 函数了,我现在稍微改一下, 我这边旁了一个十,好吧,换成二十,这乘个十也没问题。我们查个二十, 传一个二十,请问打印的是多少?好吧,请问打印的是多少?大家想一下打印的是多少?今天我传了一个二十了, 那这里就会有一些小伙伴们有一些错误了,有一些什么样的错误,大家想一下,他会觉得应该是一中刚一样的一逗号二十,所以大家可能晚上想要是这样子的,是不是来我们预选一下,跟你想要的结果是不一样的。 ds 打印的是怎么是这样子的?只是错误的结果,正确的是一二十毫米截二十,这才是正确的,我相信有百分之六十以上的人可能都会选择这个啊,尽量给大家解释一下,我们直接解释 ds 调用, 其实要想解释 ds 调用啊,要从第一次调用开始说起,对,否则不好解释 ds 调用,我们先从第一次调用开始说起。第一次调用的时候,在调用之前,首先它有一个这样的函数, 那这个函数在调用之前,其实它是在内存里面的。记住哦,函数也是在内存中的,那么这个函数叫 test, 这个函数里头有一个默认的参数,这个参数也是存在内存中的,它默认值是多少?是一和二,对不对?一和二,一和二。但我这个不好写, 我直接在里头写,里面有一个中跨 s、 d 是 一和二,对不对啊?那在调用之前,首先在内存中就有这么一个函数, 否则他不可能调用。其实函数也是一个对象,你知道也是你可以例,就也是一个变量,当然这个函数名字就是变了名字,知道函数名字就是变了名字。有了这么一个函数作为变量,我在内存中就可以调了。 那调的时候我就传了一个十进去了,传了一个十进去了之后呢?这个函数里头多了一个反数。哎,原来 a 是 没有东西懂, a 就 等于十了,第一次调用的时候, a 等于十,这个时候我相信大家都明白,执行第四行代码, 执行第四行代码,说白了就是在什么,在当前 l、 s、 t 列表中,所以加了一个,由于这个列表它是一个什么,它是一个可变类型,也就是说它的值是可以改变的,也就是说一 r 后面加了一个十,好吧, ok, 这也就是这个列表,这个不要了,也就是这个列表 l、 s, l、 s、 t 一, 这个列表已经变成这样子的, 因为它是可变类型,往里头追加了,它值就变化了,就变成了它内存不变的情况下,它的一二,它的原来的值是一和二,现在值变成 e 二十了, 明白吗?好,这个时候你 ds 调的时候,你 a 长了一个二十了,对不对? a 长了一个二十, a 长了二十,又是一样的。拿着 l、 s、 t 一 去追加, 这个时候的 lst 一, 它内存是不变的,内存地址是不变的,而且内存地址不变,它里面的值被第一次调用的时候改变了。改成什么?改成一二十了?对,这个时候你追加它,就把二十加进去了,因为列表是可变类型,要注意这句话, 所以现在明白了吗?为什么正确答案是这个了?好吧,这就是为什么正确答案。好,接下来我们再再搞一下第三次,第三次调用的时候,我传了一个三式,同时我也把它 sp 一 传进去了,然后它等于什么?等于一个新的列表,等于是是一个 六十、七十,等于这么一列。那么请问正确的答案应该是多少了?各位,这个时候正确答案应该是多少了?这打印的结果应该多少?第三次掉了有三,这时候打印的结果我相信应该是有些人知道的多少了,是 六十、七十,后面接三十。答案是这样子,来看一下运行,别动,六十、七十、三十。好,接下来我第四次再调一下。第四调的时候,我这边 a 传了一个四十了, l l、 s, t 不 传,这个 l、 s、 t 也不传,可以不传吗?可以的。好,那现在正确答案是多少?这个时候你不传,正确答案是多少? 我们先看结果,变成一二十、二十、四十。其实为什么是这样子?我之前还是给大家讲了的个参数,这函数在定义好之后还在内存里头, 好吧?内存地址它是不变的,知道吧?因为它是可,尤其是个 l、 s、 t, 它是可变类型,它内存地址不变的。 ok, 它一开始是一和二,那永远是这个内存地址,除非什么?除非给他重改了引用, 除非是改了引用,那什么情况下改了引用?我告诉你,这种情况下只是改了引用,如果你还不太明白什么叫改了引用,来,我把代码给你写出来,我单子在外面写有一个 l、 s、 t, 一 开始这个列表是这样的,一和二啊,现在 l、 s、 t, 我 要它等于 三和四,那这个十,这是这种十三和十四行,其实什么意思?其实改变的引诱,说白了就是改变了内存地址,知道吧?好,我把这个给大家打印一下,你就知道了。奔着地把它往下移啊,来运行一下,它内存地址是不一样的,对,很明显不一样,看到没? 好,所以这一个是改变了他的引用,把他的引用改成另外一个了,指向另外一个了,但是这个参数是临时的。这个函数调完之后,那 st 一, 他又回到原来的内存地址了, 你知道吧?他又回到原来的默认的内存地址了,因为他他有一个默认值,默认值就一定有一个默认类型地址。所以这时候我们再传四十,还是继续使用之前默认的那个类型地址, 那之前默认了内存地址中已经把值变成了一、二十、十,二十,这时候我们添了一个四十进去,那他就变成了一一二十、四十了, 所以正确答案是特别容易搞错。那这里考察什么?第一个考察了可变类型和与不可不可变类型,第二个考察了你脑海中有没有一个内存结构。第三个考察了我们的函数中的参数的问题。 宝贝,重点要记住这句话,其实函数一定义之后,这个函数你就可以把它当成是一个变量看待,它只是它是一个复杂的变量,它这个变量在内存中已经有了, 嗯,这时候才能掉。好吧,这句话要记住。好,那关于已错案例,我们就讲到这,感谢大家再见,记得点赞关注哦!

什么是根帐啊?是一种什么后进先出的数据结构啊?又怎么怎么样,对不对?在这里我们简单的来说啊,我们举个很简单例子来,我们知道我们的数据分了几个部分跟第一个部分,我们知道叫做请求啊,发送请求呢?他会携带一个东西啊,你必须要拥有这个东西,你才能去发送,对不对? 好,那在这里就有个问题,同学们,问题就是谁让你去发请求的,对不对?好,比如说上面一个,他是 a a 呢?让什么让上面的这个请求去发送 他来做这件事情?好,那是谁让你 a 去让他发请求的?能理解吗?就是这样的一个对应的一个过程啊,他就形成什么?形成一个对应的链条啊,形成一个对应的链条,而这个链条里面绝对会有一个步骤。什么步骤呢?就说你既然要携带一个东西 去拿一个东西,那好,如果你也对拍粉爬虫感兴趣,猫将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解,那鞋带这东西是谁给你的? 在这个链条中,他绝对有这么一个过程啊,可能在中间,可能在前面,可能在后面,对不对?好,我们所谓的跟站,就是把这个链条全部摸清楚,直到找到你加密的位置, 就叫跟站啊,通俗的比喻呢?比如他这么说的,他说老板 a 下令经理 b 安排员工 c 发送网络请求,那好,那如果说我们在员工 c 的 位置按下暂停键键,也就是我们常说的断点,通过这个链条啊,我们可以怎么样看到 是谁一步一步把员工交在把这个任务交在员工手里的同时,在这个过程中啊,他发生了什么?他做了些事情,为什么从而找到我们对应的一个加密位置啊?在这里头呢?第二部分,我们来看一下,为什么可以通过这个跟站找到加密位置,或者说为什么要使用跟站这个技能来找, 对不对啊?因为我们在前面的过程中,你会发现我们很多搜索一搜就搜到了,对不对啊?那好,那为什么我们要跟站而不是搜索呢? 第一个大家注意来,首先啊,我们在前面也发现了,我们去搜索的时候呢,有时候会出现两种情况,第一种是非常的多, 对不对?非常多,全区搜索关键字犹如大海捞针,但是你执行的逻辑链路是没办法隐藏的,我可以跟站,但是我不一定能搜得到啊。 那第二什么呢?混响什么意思呢?我们在前面讲过 g s 混响对不对?代码它可能说它加密呢,是用的这个 password, 但是你去搜这个 password, 你 是搜不到这个的,你搜不到的啊,没有这么个东西,它变成了这样的东西了, 这是第一点。第二点什么呢?第二是结果推倒原因啊,因为网络生成是最终结果,对不对?那请求里面加入参数,必然是发送请求之前的某个步骤生成的,这是必然结果,一定的,这个请求发送之前绝对啊,有了这个对应的结果,他不可能请求发完之后他来了个结果啊。所以说呢,我们再来看一下我们这 s 跟站的一个流程, 拦截发包位置对不对?我们一般会用叉 hr 断点检查参数,发现加密,晚下去找站,寻找加密位置,找到铭文加密前的状态,好在这个状态之间中间有什么我们的加密函数, 这就是我们可以通过这个 copy 对 应的内容啊,一层一层的去,怎么样去找到加密位置的时候,这也是我们参数的根赞。 好吧,那经过这一节之后呢,向大家对于跟站这个点有一个初步的了解。好吧,如果你也对拍粉爬虫感兴趣,猫将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解。

我们来讲一下啊,逆向中出现的一个名词叫做 r p c, 那 首先要知道这个 r p c 它怎么用,它好不好用,我们首先得知道这个 r p c 它是什么?首先我们先说一下常规的,常规的 r p c 呢,指的就是远程过程调用, 它是一种什么技术呢?就是通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术上的一个协议。 那通俗的来说, r p c 让调用远程服务器上的函数就像调用本地函数一样简单。 那开发者呢,不需要关心网络连接、数据打包、解包等复杂的这些底层操作啊,那一次完整的 ipc 调用呢?它可能会涉及到服务端以及它们各自的存根等等等等,那这里我们就不详细说它的一些组建什么东西了啊。我们来说一下 js 逆向中的 ipc 是 指什么? 所以在这里我们来看一下我们传统爬虫过程中啊,如果遇到加密的一个参数,比如说这个签名啊,或者说我们常见的这个 pass word 啊,我们通常是几种方法对不对?第一种, 他如果是一个这种标准加密算法,我们可以自己去实现,如果说他不是,我们可以怎么样?我们可以去把代码复制下来,也就是我们俗 称的扣代码啊,或者说我们在 node js 中补全浏览器环境,对吧?来运行啊,叫补环境。如果你也对拍粉爬虫感兴趣,土猫将毕生所学都拆分成了这些,从零到进皆全流程,按照八十老奶都能学会的方式讲解, 无论是抠代码还是补环境,都是非常耗时的,非常痛苦的,那此时此刻我们就想能不能用 rpc 去做呢?怎么做呢?也就说我们直接在怎么样,直接在真实的浏览器里面去注入一段这个 webshop 的 客户端代码,用 python 本地再搭建一个服务器, pass 呢?需要把加密的参数发送给浏览器,浏览器 g s 算出结果之后,再通过这个 web socket 发回给 pass。 那 整个过程其实像什么?像我们在调用一个本地的函数,但是实际上我们是在调用浏览器里面的函数, 对不对啊?那它整个一个通信架构就是这样的,来 i 省爬虫程序啊,发送参数铭文给真实的浏览器环境,返回加密密文啊,再怎么样再去做对应的操作啊,那这样的就比较简单了,对不对?那我们要做的事情只需要怎么样? 只需要找到深层加密位置的 js 函数就可以了,我们还需要去扣代码吗?不需要了,我们还需要去补环境吗?不需要了, 对不对啊?这样的方式相对来说是比较简单的一种实现啊,这里呢也有一个极简实现的一个什么,那也是如何去对应的?操作如何?这个 webshop 酷与这个浏览器进行一个交互,对不对? 好,那为什么要选择这个 ipc 呢?其实这个 ipc 的 选择了什么呢?主要是如果说我们一时半会搞不定对不对?我们可以用 ipc, 可以 去搞,但是 ipc 呢?它的并发症非常的低啊, 不是很好,而且稳定性也不是很好啊,内存占用还高,就说这只是我们一个备选方案,我们了解七个好不好?那到这里这次的分享就如果你也对拍粉爬虫感兴趣,土猫将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解。

好,各位小朋友们,大家好,接下来我们开始讲类和对象中的一个非常重要的一个概念,叫魔术函数。来判断中, 只要是在内中以双下角线开头,双下角线结尾的这样的函数,都是叫魔法函数或者叫魔术函数,它是指的是具备一些特殊功能的, 或者说有一些特殊含义的函数,而且这些函数的大部分情况下全部是自动掉落的,不需要我们人为手动掉落。 那首先先讲第一个,这是我刚刚我们前面提过的 innit 这个函数, innit 这个函数是双下角线开头,双下角线结尾,它这个函数是干嘛呢?是对象的出使化函数。注意不是创建对象函数啊,是对象已经创建出来了,现在要对这个对象他的属性,尤其他的属性对他进行出使化。 什么叫给对象的属性做出始化了?说白了就是给对象的属性来做赋值,所以我把它称之为叫对象的初始化函数。这个阴历的函数在创建一个对象的时候默认被调用,不是我们手动调用的, 那什么时候被默认调用了,回到我们的 python 中呢?就这到二十行代码,第二十行代码一运行,这不创建了一个 car 这个类的对象吗?一创建这个对象的时候,它会自动去调用 index, 但注意 调用音律的时候,其实这个对象已经创建出来了。估计讲到这了就会有人想把火砂锅问到底是吧老是这个对象到底是在什么时候创建出来的,然后才会调用这个音律。那照你这么说,在 是首先把对象已经创建出来了,再去调用,讲一些阴历的这个函数,对不对?你要这样理解是没有错的,因为我刚说了,而且说了不下两次了。阴历的函数是 对象已经创建出来之后,现在要给这个对象做出实化了,那就会自动去调用我们这个数字,自动调用阴历的函数, 心动吗?老师,那到底什么时候?那,那对象什么时候创建出来呢?这叫讲到另外一个魔法函数了, 这个魔法函数后面是我单独给他加的一个内容,本来是应该后面加的这个魔法函数,我告诉大家是什么?小游戏六里面参数不要动它。小游戏六 为什么不懂?等会我后面会讲到的。这其实这些魔法函数全部都是负类的,都是乘写,所以乘写函数的参数不要动啊。这里面我们就打印一句话,函数一一被执行,就会创建 卡对象卡这个类的对象,当然它创建其实由负类,由负类的,你也有函数帮我创建的,所以后面有一句话是千万不能少的,如果少,这个对象并不会被创建啊,叫 return。 这个后面再给大家说,这叫 super, 什么? super, 包过去了,包 super 叠小号线六, 说白了是调负累的小号线六。这个函数今后 x 以及心心 p w x, 明白吗?这样子是这样,这句话后面我再讲,好吧,先你先。总而言之,你先知道这句话必写,不写的话对象并不会被创建出来。好, 那在这个里,在这个函数我们也会先用顺序的,我们在这也得打印一下, ctrl 开始出手哈。对象,我们看这两句话谁先打印好不好?看,是先打印这句话还是先打印这句话,好,我们把这个代码先部署一下,我们单独创建一个,其实你不用带那么旧 就执行这个,第五、二十五行就给了,来,我们来运行一下,走这个参数,不用这个地方传太多了,就传这一个就给了。好,来走,来大家看一下,那你发现打印了两句话,对不对?第一句话是先打印的是创建卡的对象, 创建卡的对象不就是在这打印的吗?那就表示想要选六这个魔法函数先被执行对不对? 再有一个叫开始出式化卡对象,阿丽就这样。好,我在这里给大家说一下,他会我们的任何一个类的实力,任何一个类的对象被创建,他是先调用这个函数, 调用这个函数其实哪一行代码才是真正创建这个类的类的对象?是这一行代码,好吧?这一行代码才是真正创建我们类的对象。 传染之后并且给你会,会返回 return 会给你返回,返回之后其实就得到了当前类的对象,有了当前类的对象,然后才才会是掉一直自动掉的, 掉阴影的时候他把 self 会自动传递来传谁就是传二十二行这句话返回的刚刚创建出来的那个对象。 cf 就是 刚刚创建出来了这个类的对象本身好不好,同时也会把其他的型,他像比亚迪、汉中型轿车这些型他也一并传进来。之后接下来时尚是对当前刚刚创建的这个对象的所有的属性来做出实化,第十行、 第十二行以及第十四十四行都是做初识化了,这就是我们的这个 in 的 函数,好吧,在 in 的 函数的讲的过程中,我顺便也把是往下滑线六这个函数讲了,在下滑线六这个函数其实是属于类函数。 好吧,总,我后面我们要再讲的。好,我们继续回到这个阴历函数,阴历的函数它是自动调的,不需要手动调,它在创建一个对象的时候默认会被掉掉容。阴历函数的第一个参数一定是 self, self 这个参数不需要开发者传递, 它是手动传,而不是自动传递的。 python 解释会自动把刚刚创建的对象传递过去。 好,这是第一个密的函数。接下来我们再说第二个 str 函数,当我前面的下凹线尾说 str 函数前面是双下凹线,后面也是双下凹线,它也是一个未来经常用的一个魔法函数,或者叫魔术函数。 它什么意思?它是当有有代码 branch 输出一个对象的时候,就会自动去调用这个对象的 str 函数, 并且返回这个 str 函数的返回结果。好吧,并且这个 str 函数的返回结果会自动的通过 print 函数进行输出。那如果你还没听太懂,没关系,我们回到这个拍唱中, 现在我们是没有 s 小 号线 str 这个魔法函数的,没有对不对?那没有,我以后一不小心我会打印一下这个对象 c e 会不会,未来肯定会,这把 c e 输出一下, 一输出,输出了这么一堆东西,这一堆东西就是由二十六号处理器 c 一 来输出的,他输出了当前这个对象所属的类,以及这个对象的内存地址,当然这是十十六位的一个内存地址, 明白吗?那为什么会输入这个是因为负类的 str 函数就这么规定呢?所以这个我可能很多同学不喜欢,这不是我们想要的,那怎么办?我们这时候就需要定义自己的下角线,下角线这双下角线 str, str, 再加双下角线这个函数, 那这个函数一定有一个 return 的 返回结果,这个返回结果是自我创的,那这个返回结果,所以你返回什么?好不好?总而言之,它返回的内容就是 print 函数未来要输出的内容。好吧?好,我先把这个注示写一下,它是一个 s d r 魔法,对, 它是以后只要有 print 后面接对象,那么则则会自动调用 sdr, 并且打印 sdr 函数的返回值。 如果你这里面没有任何返回值,假设你这里面就返回一个空,返回一个空字幕状,那么它打印的也是一个空。也就是说等会我们二十九行打印完之后,不会出现这个了, 只会出现空自我创。来,我们看一下,它会出现一个空的自我创。左眼,这你打印什么?你输,你这边返回什么,它这个对象就打印什么。二十九行打印这个对象,它就打印什么。看它打印 abc, abc 不 就是你这个 s d r 函数返回的结果吗?好,所以以后我们为了输出这个对象的时候 非常方便,我会干嘛?会把这个对象的一些属性啊,按照一定的格式进行输出,比如说我们会输出这么一个组合, f 汽车的品牌是我们要访问这个,它的属性对不对?千万记住加 self, 你 不能说直接是 brown 的, 不行,这个 brown, 那 到底是谁的属性? 是 self 当前这个对象的属性。好情号是报号 四 f 点 type 嘞,汽车的类别?是啊,括号四 f, 点开了个人, 这就返回了一个完整的字状,对不对?这时候当你二十九行打印这个某一个对象的时候,打印这个 car 这个对象的时候,阿俏他就会输出这么一句话,这句话就别人依靠打印。 c 这个对象原来是比亚迪这个品牌的车,型号是汉,是属于中型轿车,别人一看就非常清楚了。 这就是一些奥线 s、 d、 r 这个函数的特殊的含义,知道吧?还有一个,还有一个是什么 d、 e、 l 函数?答案,前面的双下双下角线以及后面的双下角线,我没有读出来,是当删除一个对象的时候, python 解析器会自动掉的。 好吧,那我们把它写写一下,小一些。奥线 d、 e、 l。 我 们打一句话说,认真开始删除对象, 这没有符号值,你加符号值也没什么用。删除对象,但你可以写其他代码,比如说你删除对象的时候,你想做什么事情,你发个通知你,还是啊记录一条日记等等,你都可以在这里头写好不好? 那他什么时候会自动调用这个 d、 e、 l 函数?是当你删除你通过这个 d、 e、 l 表达式来删除 c e 这个对象的时候,他就会自动掉。但如果你说老师我不写三十四号了,不写三十四号,我告诉你也会掉,为啥了? 当然后面我们要讲的是派锁内存管理的时候,我会讲这个程序执行完之后,会自动把所有的变量都清空。 c 一 是不是个变量?是的,这个变量是一个卡对象,他也会清空,清空的意思就是删除,所以其实你不加他,当程序执行之后也会有这句话,开始删除对象,你加他,那他只是 提前删除 c 一 这个对象,他就会自动调用 d 这个魔法函数,各位听懂了没有 啊?所以当有人去删除我这个对象的时候,我这个魔法函数就会自动被执行。你代码里头写什么随你,比如说你写通知的代码,你写发消息的代码,你写记录日的代码,都可以自己看着办。这几个就是未来 比较常用的,其实我在阴历的函数里面加了一个叫下腰线六,那个函数加起来一共四个,这几个是比较常用的魔法函数,希望大家知道每一个魔法函数它的特殊含义是什么意思,什么时候掉 好不好,记住这一点就可以了。好,这节课我们先到这,谢谢大家,再见。记得点赞关注哦!

下载了一点五版本,灵动岛的朋友们可能注意到了,原本透明的窗口变成了白色,主包这边写程序的电脑上是正常的,到其他电脑上变成了这样,主包尝试在电脑上下载 webb 二,结果弹出来的提示给主包都干懵逼了。 主包也检查了,其他电脑透明效果都是打开的。主包也咨询了一下豆包秘书,但是基本没啥用,所以主包再次跟大家道个歉。由于目前主包开学时间可能少一点,但是主包承诺会尽快修复,这个谢谢大家支持!

pason 从入门到精通第二阶段第一章三点三,写入文件学 python 我 只看糯米哦! 在上期视频中,我们学了怎么从文件里读取数据,那么今天我们就来学习怎么把文字内容写进文件里面。写文件主要是三个步骤,第一步是要打开文件,第二步是在文件里写入内容, 第三步是写完内容之后关闭掉文件拍访。写文件有两种模式, 在上期视频中,我们读取文件用的是字母 r, 也就是阅读模式,那么今天写文件用的是字母 w, 它表示的是写入模式。这里有两个注意点, 第一个注意点是如果没有文件的话,那么 python 会自动创建一个新文件。第二个注意点是,如果文件已经存在了,那么我们写入的新内容就会替代掉文件里面所有的旧内容。 那么糯米接下来就用实际代码来演示一遍。第一步我们要打开文件,这里就要写一个 open 函数,然后在 open 函数后面加个括号, 接着括号里面首先要写文件名,我们这里就取名叫 notes 点 txt 的 文件,这个文件是不存在的,那么在之后派森肯定会自己创建一个 notes txt 的 文件。接着是输入一个字母 w, 这个字母 w 就是 我们上面讲的写入模式。 最后我们要加上 encoding 等于 utf 杠数字八,这个我们在上期视频也有讲到过,它的作用就是告诉 python 我 们用的是 utf 杠八的编码,写中文的,这样才不会乱码。 最后我们这段代码复制给字母 f, 这个 f 代表的就是这个 nodes 点 txt 的 文件,后续我们只需要对这个字母 f 进行代码操作就可以了。 接着是第二步,就是写入内容,这里我们用的是 write 函数, write 的 中文意思就是写作的意思, write 后面紧跟着括号,然后括号里面输入我们想要写的内容就可以了。 这里有个重要细节, write 函数是不会自动换行的,如果我们想要换行的话,就必须手动加上换行符,就是加上反斜杠和字母 n, 反斜杠和字母 n 就是 告诉电脑这里该换行了。接着是第三步,就是写完内容之后要关闭掉文件。关闭文件还是使用我们上期视频讲的 close 函数, 这一步我们绝对不能省略,因为 pass 为了提高效率,可能会先把内容存在内存里面,等内容攒够了再一次性写进硬盘。如果我们不调用 close 的 话, y 程序中途崩溃,那么这些没来得及写进硬盘的数据就丢了,所以这点宝宝们一定要注意。 那么最终的代码就是这样子的,我们来运行一下这段代码,运行代码之后,我们就可以看到 python 文件的同目录下会出现一个叫 notes txt 的 文件,我们双击打开一下这个文件夹, 可以看到文件夹就是我们写入文件的内容了。糯米来总结一下这个写文件的三部曲,第一步是打开文件, 第二步是写入内容,第三步是关闭文件。这里有几个小知识点,第一个就是 w 模式,也就是写入模式,它是会覆盖文件里面的旧内容,而不是在文件的旧内容里面添加新内容。 第二个是我们一定要写 encoding 等于 utf 杠数字八,因为我们写入文件里面的内容肯定是有中文的,如果不写这个的话,那么 python 就 会显示乱码的。 第三个就是写完内容之后一定要调用 close 函数关闭掉文件。但是我们想保留文件的旧内容,然后在旧内容后面追加新内容,该怎么办呢? 这就是我们下一期要学习的追加模式,要让程序既能记住过去,也能续写未来。关注糯米,持续带你掌握 python。

本节内容是从微博登录看 python 用户交互。什么是用户交互呢?我们以微博为例, 大家都有自己的微博,那么第一步是不是我要登录我自己的账号和密码,才能进行发微博等等做一系列的操作。那这个登录账号密码的过程就是与用户交互的过程, 你就是说我这个系统让用户做什么样的事情,用户做完了以后才会给他一些反馈的信息,这个就是一个交互的信息。有什么样的网站是用 python 来实现的呢?我学完这个 python, 我 是不是可以写一个微博等等,我们看一下这个有哪些网站是使用 python 来写的。 在国内知名的两大网站,比如豆瓣或者知乎都是使用 python 进行开发的。在国外也有一些很大的网站, 比如说 excel 是 美国大众点评或者说 slide 等等,都是使用 python 开发。因为 python web 开发有很多框架是非常方便,大家学起来也是非常简单易学的。如果您要立志于做 web 网站开发,学 python 是 一个很好的切入点,那么我们再看一下 python 用户交互, 刚才我们看到的是一种带有界面的一种用户交互,那我们接着再看一下命令行版的用户交互,也就是说我一段代码提示用户输入一个数字, 比如说请输入一个数字,然后我输入五,然后他会接着问我还想接着输入数字吗? y or no? 如果我键入的是 y, 那 这个时候我要接着输入,他会接着提示我请输入一个数字,让我写六, 然后他后又问我一次,还要再接着输入吗?直到我点了 end 退出,不再输入了,那么这是一个简单的用户提示,有这样一个简单的提示,用户就能很明白你这段程序让我做什么事情才能达到我想要的一种效果。 那所以说与用户交互是编码过程中非常重要的一个内容,那 python 该怎么去实现呢?我们看一下, 那在 python 三里面,我们是使用 input 的 函数来实现用户交互,那如果您使用的是 python 二的话,也可以使用 input, 另外还有另外一个函数叫做 role input, 我 们 python 三里面已经去掉了, 所以建议大家学习 python 三,如果公司没有强制学 python 二的话,一定要学 python 三,那么回到 python 三里面,我们只需要记住一个函数 input 就 可以了,它与 python 二区别还是很大。 那么语法我们看一下, input 关键字后面紧跟着括号,里面用引号引起来,里面给他一个提示信息就可以了。比如这样一个例子, 请输入一个数字,然后 input 这个就是一个提示信息,这个提示信息你可以写任何一段数字,比如说请输入您需要的用户名等等都可以,您自己让用户明白你要干什么事情就可以了。 那这里大家需要注意一个点,这个音符的函数是 python 自带的,它要接受一个键盘数的数据,比如我键盘敲一个数据,那这个数据的话,它返回的一定是一个字母串,也就是 string 类型,这一点很重要,一定要把它给转换成 i n t 类型, 这样的话更加方便你去后面代码的处理。后面我们有一个项目实战,让大家来写用户自己的通讯录,这个时候一定给大家注意一下,你滚动的是字母串, 我们接着使用 pygram 软件给大家演示一下刚才我们讲解的所有的用户交互的信息,那同样的代码放到了左下角,请大家下载参考一下。 python 用户交互,我们主要使用内建函数 input 来实现。我们看这样一个需求,模拟微博登录程序, 微博系统已经记录了我的账号信息如下,用户名, tfboy 密码,一二三四五六。那现在我该怎么样去模拟这样一个系统呢? 那第一步是不是说我要使用银铺进行用户输入,要提醒他输入我的一个账号,那么提示信息该怎么写呢?也就是请您输入您的账号, 输入完账号之后我还要输入什么我的密码,请输入您的密码, 那输入账号和密码都有了,我是不是要把它给一个变量存储一下,那这个变量比如说 user, 那 么密码我给它起个名字,比如叫 password, 那 用户名密码我已经输入好。下面的话我该怎么样去判断我这个用户名以及我用户输入的和我系统存储的是不是相等?那是不是我们需要使用 python 三的控制结构里面的 ef 条件 if, 我 要判断谁 user 是 不是等于我这个存储的 user name, 如果它们两个相等,就证明通过。接下来再判断我这个密码是不是通过,那密码和账号是不是同时进行,满足的时候才能登录,那所以说我这个条件应该使用 and, 后面紧跟着是 password, 他要等于我之前存储的这个密码,当他们两个都满足的时候就进行登录的,后面一定要跟上冒号。那登录成功了以后,我要给他一个输出,就是欢迎回来, 请开始您的微博之旅。 那反过来,如果我这个用户名密码没有输对,那是不是就应该给他提示信息,说您输入的密码或者账号错误,或者说是请输入正确的 账号和密码。那现在是不是我这个模拟的程序都已经写好了,我们运行一下, 我们可以看到请您输入您的账号,这个就是用户交互的一个提示信息,他现在让我输入我的账号,随便输入一个 python 后面您输入的密码,那这个密码是什么?我直接一二三四五六,他已经提示请输入正确的账号和密码,也就是说我没有登录成功,我们再看一下这个代码,请输入不是争取是正确, 我们再运行一下,那这个时候我不看这段代码,我是不是根据这个提示信息就可以进行操作了?那微博我们也是看不到里面的代码,登录账号就可以了。那这个时候我输入一个正确的,就 t f boy, 那 密码是什么?一二三四五六。 那这个时候我再按回车,是不是就应该输出欢迎回来,好,这个时候可以看到,欢迎回来,请开始您的微博之旅。 如果说我这个账号密码,一般的电脑是让您输入三次或者五次,超过这些次数以后可能就会锁住了,二十四小时以后才会给您解锁。我们经常看到这种情况,那这样输入三次该怎么样去实现这样一个功能呢? 这就是我们下一节讲的内容否循环,当然你也可以使用否循环来进行实现。那么现在你也可以使用否循环给他给写一下我们之前讲的内容。另外一个小问题, 我这个密码一二三四五六,是不是可以进行隐藏起来?是的,可以的,你也可以使用一些新号来代替隐藏一下。它有一个模块,有一个内置的库,我们直接给它调用一下就可以了,这些都是扩展内容,当然这个程序可以写的很复杂, 我们复习一下本节的内容,本节主要学习了一个内建函数 input, input 提示信息,那么需要注意的一个点,它返回的是一个字母号,而不是数字。如果您后面要处理一些信息的话,最好是进行一个强制类型转换 in 的 就可以了。好,谢谢大家。

哈喽,大家好啊,最近程序大家应该都做完了,是吧?那我们做完程序之后就要去部署或者说去运行一个程序,但当然这个程序可能在你的电脑上能正常运行,但是你发现你如果换到其他同学的电脑啊,他就运行不了了。那今天我就给大家演示一下 是如果说,嗯,你换到其他同学的电脑里面怎么去运行这个程序,那我们以这个拍摄系统为例,大家可以看到这是我在远程的一个桌面。那首先第一点,我们到一个新的电脑环境里面,我们先打开 windows r, 我 们先看啥呢?我们先打开命令,行,我们先看一下它装了哪些环境。那像这个项目的话,我们有前端的 v o e, 对 吧?大家可以看到这是 vivo 的 一个项目结构, 那后端的话,我们是 python, 大家可以可以看到我们这有个 app 点 py, 这个是我们的一个 flask, 呃,一个项目,那好,我们先看第一点,就是我们先看一下它有没有 python 的 环境,就是 python 杠杠,威慑 它的是三点十三,那高于我的一个开发版本,就是在我的电脑我开发的时候是三点十二,那它的电脑是三点十三,那高版本是可以运行低版本的,只要这个冲突不是很大, 那后端没问题了,那我们可以看一下前端有没有前端,我们是用的一个 node 的 一个环境杠 v。 好, ok, 我 们可以看到它有一个 node 杠 v。 二十一点七,我们看一下 npm 杠 v, 如果这种卡顿的话,大家可以看到你可以多按几下回车,它就 ok 了。好,那我们可以看到啊,这个 node 的 环境也有了, python 的 环境也有了,对吧? 那大家如果说有同学说没有怎么办呢?如果说没有的话,我推荐大家去,呃,找两个环境,第一个是我给大家看一下, 第一个是康达这个环境啊,这个是我们的一个拍摄的一个虚拟环境,那我在下期视频会给大家讲一下,就是如果说你用这个虚拟环境如何去运行, ok, 那 我们有了环境之后,接下来给大家演示一下如何去运行。首先第一点, 我们先进入这个命令。行啊,我们怎么快速进入呢?其实在这个地方我们选中一下,然后把这删掉,输入 cmd, 它就会在当前的路径下面去打开一个命令行窗口,我们回车。 ok, 大家可以看到在这个路径下面了, 那我建议大家啊,我建议大家就是,呃,尽量不要用中文,大家可以看到这叫中文,是吧?那我们可以把它换一下,改成什么呢?改成 project, ok, 改成这个名字啊,为啥呢?因为有的编码就是有的 python 依赖,它不支持中文。呃,所以说你有时候装一些依赖会出现很多的莫名其妙的一些报错,那我们避免这个问题,就直接全部换成这个英文的一个路径就可以了。好,我们重新打开 c m d, ok, 那 我们到这个环境之后,首先第一点啊,我们要干嘛?我们要装这个后端,我们先从后端的一个依赖开始安装,那这个地方我们可以看一下 p i p list, 看一下这个电脑它有哪些依赖,我们可以看到它里面什么依赖都没有啊, p i p 里面的一个依赖是空的,那这里的话我们可以呃,打开。 呃,我推荐大家用一个 vs code 这个代码编辑器,当然如果说你没有的话可以用什么呢?可以用我们的拍叉姆,对吧?拍叉姆也挺好用的。 ok, 好, 我们点击这个信任, 打开之后,我们点击这个项目的一个文件夹,我们找到这个 readme, 一般的话我们都有这个项目说明。 ok, 这里的话我们可以找到。呃,这个部署的一个虚拟环境,我们直接复制这句安装依赖。好,我们打开这个粘贴回车,稍等它一下,等它把这个依赖安装一下。 ok, 那 当然在它安装这个后端依赖的同时,我们也可以打开我们的一个前端,对吧? 还是这个老样子,我们输 c m d 回车啊,大家可以看到它的这个路径,是吧?啊,不是这个,我们可以打开这个 project, 在 这个地方删除 c m d 回车啊,这个里的话我们就直接输,什么呢?叫 node 啊。 啊,不是,我们应该先进入到这个 app 文件夹,对吧?因为它在这个目录下面,我们要在这个目录下面安装前端的一个依赖, 那我们直接输入什么呢? cd app, 然后 npm 英斯特奥啊,大家如果说你想缩减一下 npm i 也可以,我们 npm i 装一下前端的依赖就可以了。 稍等,这个地方有一点卡啊,这个只是一个警告,没有关系,不影响。 ok, 我 们看一下另一个命令行跑完了没?大家可以看到我们这个命令行跑完了没?大家可以看到我们这个命令行跑完了没?大家可以看到我们可以单独的运行前端 npm run 第一位。好,我们跑一下,大家可以看到你看到这个地址的时候,就证明这个前端已经跑起来了,我们 ctrl 键盘的 ctrl 键加鼠标左键点一下, 它就会默认的一个浏览器打开,那这里的话,我们可以打开我们的一个命令。行。好,在这个地方我们可以跑一下我们的后端,后端 python app 点 py。 ok, 我 们可以看到啊,这个后端也跑,跑通了,是吧?这个时候我们再次刷新网页,大家可以看到这几个模块已经加载成功了,那我们试一下这个 b 站的一个视频弹幕爬取,我们 ctrl t bilibili, 我 们随便找一个,比如说这个,呃,复制一下这个 bvid。 好,我们来到这个地方,我们粘贴看一下,点击开始爬取。好,大家可以看到啊,这个时候我们已经爬到了,对吧?啊,我们这是格式化的一个结果, ok, 那 下面这个我就不给大家演示了,今天就是给大家演示一下,就是如何在一个新的电脑里面去运行我们的一个 python 程序。那有的同学说,哎,老师,我想在这个 python 里面运行,可不可以呢?可以, 那我们这里给大家演示一下啊,就是如何去运行,我们把终端都关掉,大家可以看到,这个时候你刷新页面就会发现你进不去了,对吧?因为服务没有跑,怎么去跑呢?这个时候我们打开我们的一个拍叉, 老样子,打开命令,行,我们在左下角找到这个终端点一下,大家看一下你现在的路径是在拍啊,现在的路径是在这个 project 里面,那我们需要干嘛呢?第一步我们先跑后端,就 python app 点 py 按 table 键补全一下,没撤 啊,我们可以看到后端服务跑起来点击这个加号,对吧?啊?点击加号我们找到这个什么呢 app 啊?我们要在这个 app 里面运行的话,首先我们要 cd 里面,对吧?我们应该把 cd, 然后 app, 然后 npm run d e v, ok, 大家可以看到我们再次鼠标左键加这个 ctrl 键点一下, ok, 我 们可以看到。啊,这个,呃,页面就跑起来了啊。这个就是今天给大家带来的内容,就是我们如何在一台新的电脑里面去运行一套完整的原码。 ok, 感谢大家观看,我们下期再见。