python写代码怎么知道代码意思?

各位热衷于刷抖音的同学一定在前几个月刷到过一条风靡全抖音的视频:哦泡果奶病毒。

基于好奇,我特地跨过山和大海,也穿越人山人海,最终搞到了这个程序的安装包。程序的功能其实也很简单,就是将代码打包成apk文件后,让人将其当成安装包安装在手机上,然后运行后,手机就会自动播放90后的童年回忆,哦泡果奶主题曲。并且这个程序在安装的时候会自动申请打开控制手机音量键,否则不通过这个权限程序根本无法运行。所以说如果你打开这个程序,手机的音量就不受你控制了,除非关机,不然你的手机配置再好,也逃脱不了被哦泡果奶主题曲冲击的命运。

那有的同学一下子腰板就坐直了,嗯?要搞事情了?图片图片,搞肯定是要搞滴,但是捏,不是哦泡果奶,是另外一个小程序,具体效果如何呢?点击下面视频看效果:

可以看到上面的视频里面这个程序完全是脱离python环境运行的,也就是说不论你的电脑有没有安装python或者是Pycharm他都可以运行。

实际上这个程序的功能也很简单------让运行这个程序的人说我像吴彦祖,否则他只能关机,除非他点击:’简直就是一个人‘。

那么如果要做这个小病毒怎么做呢?看下面

首先我们要知道,如果要做出让某句话不断重复的效果,肯定是需要循环的,让某段程序重复不断地去执行,这就需要用到我们今天学的新知识------while循环了。

在讲while循环之前,我们先给大家来一段程序:

我们再来看看这段程序的运行效果:

那么短短两行代码,却让’迪迦奥特曼是我最好的朋友‘这句话不断的运行,如果我不用pycharm的强制关闭功能的话,那根本就无法关闭。

那接下来我们来看看这两行代码的意思:

我们知道while在python当中是循环的意思,那么这个时候问题来了,True加在while后面是什么意思?我们之前在第三节课讲数据类型的时候讲过True属于布尔类型,这种数据类型就两个关键字,一个True 一个False。True 代表真,也就是我们大白话说的正确,对的意思。而False代表假,大白话说错误的意思。

这个时候就必须要再讲讲while的特性了,while的这个特性跟if和elif有点像,那就是在他们后面必须加判断语句。我们平常用if或者elif的话一定会在后面加上判断语句,比如说像我们上次做的那个肥胖测试仪。同样的,while后面也必须加判断语句,那么False跟True同样的也属于判断条件,while True实际上就相当于让print('迪迦奥特曼是我最好的朋友')这行代码做了一个无限运行,无限循环。如果运行后不强制关闭这个程序,他就会一直运行下去,直到你的电脑没电或者冒烟。

那么这样一来就很好理解while True:的意思了,加上True的话就相当于加上了一个判断条件,但True就相当于一个万能令牌一样,不论是谁都可以用True自由出入各个场所。如果符合这个判断条件,那就执行print('迪迦奥特曼是我最好的朋友'),如果不符合那就不执行。但很明显,True的意思相当于直接让你执行下面的print('迪迦奥特曼是我最好的朋友'),基本上相当于走了个过场,但是该加还得加,因为我们说while的特性就是必须在他的屁股后面加判断条件。

说完判断语句接下来我们再讲讲空格,其实我刚才就说过,while循环跟if语句很像,像到什么地步呢?他只比if语句多了个循环的作用,剩下的基本差不多。就像我们接下来要说的空格,现在旁边有电脑的同学可以试试,把print('迪迦奥特曼是我最好的朋友')这行代码的空格取消掉,让他跟while True对齐,会发现什么都运行不了。因为我们说print('迪迦奥特曼是我最好的朋友')这行代码是需要循环的,既然需要让他循环,那就必须让他在while True语句下空四格,当然如果我们不需要他循环,那也就没必要让这句话空四格了。甚至没必要加while True.

那有的同学说,唉?那让他无限循环怎么停啊,别做个程序自己把自己坑了,到时候把自己电脑弄得中病毒了。安啦,既然有’制毒之法‘,那也一定有’解毒之法‘。如何让无限循环停下来呢?两种方式!

刚刚我们其实已经知道,True也是一种判断条件,只不过他就像一个永远都不会被拒绝的通行证一样,不论while下面的是什么操作,都会进行无条件执行,并且一直执行。

那么实际上除了True以外,我们还可以去加其他的判断条件,例如下面这段代码:

可以看到运行结果里'迪迦奥特曼是我最好的朋友'这句话只运行了一次,为什么?我们逐行来分析一下这段程序,首先第一行我们定义了一个a的整型变量,给他赋值为0。

那么再看第二行,第二行大家都知道就是让第二行以下带空格的代码都循环起来,但是大家仔细看第二行代码,这行代码说:我可以让你们带空格的代码去进行循环,但我有一个条件,那就是a必须小于1,你符合这个条件才能循环的说'迪迦奥特曼是我最好的朋友',否则如果不符合a<1这个条件的话就不让你循环了。

那么接下来程序就去进行判断了,首先他知道a目前是0,那么接下来他就让a去跟1作比较,让a跟1作比较说白了就是让0跟1作比较,换句话说,如果0<1才能让我们想循环的内容执行。很明显的,0确实是小于1的,这毫无争议。

因此我们的运行结果里出现了一句,'迪迦奥特曼是我最好的朋友',然而奇怪的是为什么只出现了一次这句话,难道0第二次再进行循环的时候就大于1了吗?非也非也,我们再看第四行代码。

第四行代码对第三行代码说,好的,你执行完了你的任务,已经说了一次'迪迦奥特曼是我最好的朋友'了,那么接下来该我上台表演了,我的任务就是给a加个1,我们之前说过a+=1展开就是a=a+1,相当于a给自己加了个1,那么原来的a=0,执行完第四行代码以后,a就不再是0,而是1了,因为第四行代码给a加了个1.

加完1以后的a觉得自己十分牛逼,打算再上循环那儿去跟1比比,看谁更大,可惜的是,这个时候程序再运行到第二行的时候,一判断,程序说,嗯?a变成1了?1跟1一比,两个一边儿大。得嘞,既然不符合a<1的规则,那我就不让你三四行代码运行了,因为你三四行都是带了空格的需要循环的,不合规矩我就让你不弄了,收拾收拾回家吧。然后程序接着再往下走,一看,嗯?没代码了,得嘞,任务干完了,回家睡觉。

其实相信大部分同学除了break这块儿其他基本上已经明白了,那这个break在英文当中是破碎的意思,但在我们的python里面他是专门用来终止循环的一个保留字。这也就意味着,无论while后面加了什么样的判断条件,哪怕是True这个无限循环,只要break一出来,那么当前的循环就被终止了。

这么一说,是不是上面的这个程序就好理解了,第一行代码先来个无限循环,第二行代码进行询问,如果用户输入的是‘是’,那就说你是我最好的朋友,并且说完后直接终止循环。否则就一直说哦然后继续循环到开头继续问直到用户回答是。

这个程序延续了我们上节课学习的easygui库,所以我们必须先导入这个库,然后把所有的input换成buttonbox(),print()换成msgbox()。这个程序我们就不讲了,代码放下面大家自己琢磨琢磨

将程序打包这个命令实际上挺多的,但是我们就根据今天我们做的程序敲打包命令。如果有兴趣的同学可以百度一下其他打包命令。

首先我们要知道,pyinstaller这个库的作用是专门用来打包程序的,并且这是一个第三方库,需要我们自己去下载,不会下载第三方库的第六篇文章,里面有专门的下载链接命令和方法。

这个库有个特殊点,就是在文件中不用导入这个库名,只要下载好这个库,然后直接敲命令就可以了。具体怎么操作看下面:

1.先打开需要打包的文件然后在下面找Terminal键,找到后单击打开。

3.在你的文件所存在的文件夹里找一个叫dist的文件夹,这是打包命令自动生成的。

4.打开dist文件夹,找到你的文件名但后缀是exe的那个软件,就是我们刚才生成的软件。直接发给你的好基友就可以了。

好啦,这期就到这里啦,我们下期见,拜拜!


好啦,本期分享就到这里,对于初学者的你来说是否干货慢慢呢?如果你对更高阶Python自动化软件测试、面试题等更多内容感兴趣的话可以加入我们一起学习哦。群里会有各项Python测试学习资源,更有行业深潜多年的技术人分析讲解。期待你的加入!

最后也希望看到这里的你终会成为一名极具竞争力的高级工程师。

欢迎【点赞】、【评论】、【关注】~

1、git使用那一块,去安装git了,没跟上,老师能稍微讲一下吗?还有就是prompt报错,说是没定义

上课时疏忽了,对不住大伙。prompt报错应该是

指名字(变量)没定义,应该是在

Python里变量不用声明,但名字要指派到具体对象,相当于赋值,才能进行操作。

2、密码管理器怎么储存输入过的密码

可以存成txt文档或二进制文件,也可以保存到sqlite之类的数据库,这些都可以用Python标准库实现。

3、.py里编写代码删除后怎么恢复?代码版本对比的git怎么安装(点击初始化存储库没反应)?

可以点“时间线”里之前提交过的版本,拷贝删掉的代码,前提是删除编辑前及时保存版本。装git的话可以直接装GitHub Desktop:

4、这个密码箱的安全性如何

目前还没有涉及密码管理功能,要保证安全性的话除了不用明文存储密码外;还可以对密码加密保存,又有输入正确的主密码才能正确解密密码;对于要取出的目标密码也可以不显示,直接拷贝到剪贴板。

5、如何将设定好的密码存储在外部txt文件,以及可以读写该txt文件

后面我们会介绍讨论数据文件存储的设计,用内置函数open()打开文件,用write()写入文件。

6、讲到初始化存储库时 需安装git 我在官网上成功安装到C盘后 还是显示未找到git.exe 请问是哪里出现问题了?

安装了没找到应该PATH环境变量设置的问题,可以直接装GitHub Desktop试试,参考问题1

7、不熟悉vs的功能怎么办

多摸索,先把最主要的功能用起来,更多的辅助功能慢慢来,可以找些讨论VS Code实践的文章看看。

8、①解决<>问题时,斜杠加在了'前面,不是要加在<前吗 ②括号里面换行不用斜杠,就听到了这一句,意思是加个小括号即可以代替好多斜杠的作用叭 ③如上面两个问题,课上会有没跟上的东西,听网课的话,2020年的网课应该和今年讲的知识点差不多叭

<和>都是单个符号,在字符串里是不需要转义的,而单引号''定义的字符串里的单引号'是要转义出现的。Python代码里,如果没有括号,要另起行继续本行内容,就要在行末加上斜杠,如下:

如果实在括号里,则不用加\,可以直接换行:

20版的课编程知识点的覆盖应该相差不是很大,但使用的案例都不一样,所以最好是都听听看看,从不同案例的角度对编程知识有一个全面的掌握。

9、今天的共享屏幕不能看,还是不太理解git的意义

共享屏幕我下面再调调看,下次大家看不了的时候可以用手机试试。关于git大家可以看看这里:

10、pycharm要怎么用啊,这种编程辅助工具有啥差别

PyCharm有更丰富的静态检查和辅助重构的功能,但各IDE间大同小异,本质是一样的——辅助你更快更好地编程和调试。

11、关于git文件夹是不是必须的呢(课上弄了半天没弄好。。。)

12、字符串的切分有点晕

关于字符串的切片可以参考官方文档:

13、如何实时显示输入的密码是否符合要求

判断过程和课上实现的过程是一样的,唯一的问题是如何触发判断机制,命令行的input不支持在中途监听按键事件触发动作,图形界面或是web界面是可以的。

需要在网站注册用户,在发布项目到GitHub的时候用注册的name和email。

15、prompt[:-1]是把prompt清零的意思吗?赋值语句后面不用加:然后像if后要加:,可以总结一下吗?除了上课讲的git,还有别的方法可以看代码改变吗?

切片操作请参考问题12,加:后面接代码块的常用的主要就是if、elif、else、final、for、while、try、with、define、class等,一个简单的标准,就是看下面的代码(段)和当前代码行之间的关系,如果是独立的、平级别关系,则不用考虑用 : 新建代码段;如果和当前行是归属、从属关系,才要用 : 开头的代码段。跟踪代码改动最好的方式就是git这类版本控制工具,想简单的话也可以对每个版本用不同的文件名,比如:

16、怎么能提高自己代码的简洁性,让代码看起来更高级

这个要慢慢培养自己对代码的感觉,简洁未必就好,多看好代码,才知道从变成习惯角度看什么是“好”,也只有写过足够多“烂代码”,才能真正体会“好代码”到底好在哪,多看、多写应该是提升的唯一途径吧。你所说的“高级”是不是指我课上提到的Pythonic?要让代码更Pythonic,需要更多的了解Python语言设计的特别之处,充分利用语言提供的一些独特特性,以及Python的内置函数和自带标准库,写出的代码才是足够Pythonic的。

17、在字符那里,好像没有考虑到中文字符(虽然在日常生活使用密码输入时也没咋注意到中英文字符的区别,只是在编程的时候才会特别注意),不知道这个能否可以成为一个使密码具有长得类似但是其实不同的点(比如i l 1)

在我们后续修改的版本里,中文字符是被统一作为特殊字符处理的,关于易混淆字符的加入我们在下此刻会单独讨论,可以先自己考虑一下。

18、pass除了课上讲的用处还有其他的用处吗

19、后续课程里面会有机器学习相关的实战编程吗?

看时间和大家的要求吧,目前计划至少会有用机器学习API进行开发的案例。

20、源代码管理那里我没有存储库,也没有git,这个需要下载安装吗?平时登录时验证码的判断应该怎么弄呢?文字识别的方面是否可以直接使用现有的技术?

git的安装请参考问题1。验证码判断是另一个问题了,主要是验证码字的生成和回收用户反馈码字的比对,识别的话要看具体用的是哪种验证码以及混淆的程度了,OCR能解决一部分问题。

21、使用break时报错,不知道为什么

可以看下具体的错误描述,多半是因为缩进造成的,break可能没有出现在while的循环体代码段里。

22、请问如何确保在随机生成密码时稳定产生至少一对易混淆字符?

不好生成的话可以直接放进易混淆字符再用随机字符补完预定长度。

23、我照着老师的代码打下来报错了怎么办

认真看下异常的名称和描述,以及错误的具体位置,无法修改的话搜索试试,或把错误信息发到群里大家一起讨论一下。

24、除了提前把大写字母小写字母那些写出来以外,有没有类似ascll那种的直接可以调用的,以及,特殊符号那些有没有类似的库?

string里都有的,今天课上时间没来得及讲,可以参考:

25、有一些像验证码那种不区分大小写的,是因为他的密钥库里面本来就写好了大写和小写的解,还是有什么方法可以不区分大小写呀

要不分大小写进行比对,可以把标准验证码和用户输入码字都用.lower()函数进行小写转换,统一到小写再进行比较:

这个方案还有个名字,叫“标准化“。

26、为什么python的while能放在代码最开始?为什么我今日课堂跟着手动编程运行调试时,digit,upeer等有时会因前后大小写不同而报错?

实际上,程序开始可以是任何语句,while当然也是可以的。Python里的名字(变量名)是区分大小写的,DIGIT和digit是两个名字,如果定义是用的是DIGIT,引用时也必须用DIGIT,digit、Digit都是不可以的。

27、多行相似语句是否可以简化?

可以啊,相似的简化和合并是最基本的代码重构策略,可以通过定义函数来实现合并。

28、git要和vs code安装在同一个目录下吗?

不要求安装在同一目录,请参考问题1

29、在判断密码正确与否时,密码中有符号【】时初始代码为什么会报错呢?

初始代码里对特殊符号的判断是看遍历出的字符是不是在PUCTUATION标点罗列字符串里,全角中括号【】没包含在内,所以判定为没有包含特殊符号,判断结果返回False;后来修改的版本,只要字符不是大写字母、小写字母、数字的情况,就认为是有特殊字符,所以会判定为包含特殊符号,判断结果返回True。

30、为什么列表是可变的,而列表里的元素是不可变的?

值变id不变(内存地址不变)则是可变对象,值变id必须改变(内存地址改变)则是不可变对象,列表作为容器其中包含元素变化容器地址不变,所以是可变对象,列表里的元素如果是列表的话还是可变对象;整数、浮点、字符串等内容发生变化会在新地址保存新内容,所以是不可变对象。

31、随机生成密码相关的random函数是否是真正意义上的随机

random本身就是用来生成伪随机数的库,可参考官方文档:

32、下载安装了git但是vscode检测不到,无法进行保存。

33、进入虚拟环境目录后,vs code找不到python解释器。(如果在base下,可以找到)

可以用如下方式创建虚拟环境:

VS Code会自动在当前目录下发现虚拟环境下的Python解释器

34、py怎么读取文件的,我的文件要放在哪它才能读? 或者说怎么让他读取特定目录下的文件?

用内置函数open()打开指定文件,可参考文档:

35、python中如何写入文件,比如说我要存储符合规范的密码,应该怎么实现?

用open()打开文件,用write()写入内容,文本或二进制格式都可以。

36、python 中深拷贝和浅拷贝的运行机制有什么不同点?

37、我有时候新建文件,为什么是.ini格式文件而不是.py文件?

文件可以自己重命名,选择文件类型为Python文件名会自动添加.py后缀。

38、一直不太理解为什么一些语言需要配置环境变量,为什么不能直接像手机里的vx,qq一样直接下载完就直接能用呢?是不是因为如果一次性都配好所有的环境占内存会很多呢?

和操作系统制定的“规范”有关,比如最常用的可执行程序的定位(PATH),开放出来作为可定制配置是方便系统进行扩展。

39、密码验证环节下次可以解决限制密码验证次数,然后过多久可以重试这种类似手机解锁提高安全性的编程吗??

可以啊,可以设置次数倒数以限制重试次数,例如:

#TODO:由用户输入密码并进行验证 print('密码输入次数(3次)超限,请一会再试。')

我要回帖

更多关于 python语言代码大全及其含义 的文章

 

随机推荐