孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

(完整学习过程屏幕记录视频地址在文末,手写笔记在文末)

在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系语言比较不喜欢。

可能有朋友说,C系和J系功能好得多。

那是事实!

而我之所以对C系和J系语言的不喜欢,

其实只是一个小小的原因

那是因为它们在代码的书写规范上要写那个令人打键盘时非常捉急的

{}

而且频繁使用~~~~~~~

写出来的代码倒是没有关系,看上去非常整洁,能够清晰明了地看出代块的起止。

但在敲代码时,因为本人双手可能协调能力比不过大家,敲打{}让我感觉很吃力。

第二个原因是,C系与J系语句结尾的;号~~~~~

现在我看到了python语句书写规范中最吸引我的地方——

python语句块的起止表示非常简便,没有{},也没有if ……end if之类的界定,也没有语句结束的;

整个是非常满足我口味的语言啊!!!

python的语句块起止的界定只依赖于行首的缩进

这对于已经有良好代码书写习惯的编程老手来说,完全没有问题,就算对于新学编程的新手来说,也是很容易也是必须会掌握的基础,除此之外,python就没有别的复杂的语句规范了。

一、python语句块的界定

具体说,python是怎么用仅仅依靠每行代码行首的缩进来界定语句块的起止的呢?

简单举例说,就是:

如果连续三行代码的行首缩进都是三个空格,那么python就认定这三行代码是同一语句块的。

具体测试例子如下:

strA='孤荷凌寒'

if strA=='孤荷凌寒':

print('你是孤荷凌寒')

else:

print(strA)

上面的测试例子中:

strA='孤荷凌寒'

if strA=='孤荷凌寒':

else:

这三行语句的行首缩进是没有缩进,那么,他们是同级别语句,组成一个级别的语句块。

而在

if strA=='孤荷凌寒':

一行语句和

else:

一行语句之间的

print('你是孤荷凌寒')

语句缩进了四个空格,因此它是独立的一个语句块

二、条件语句的基础——布尔变量

布尔型变量(Boolean Variable)是有两种逻辑状态的变量,它只有两种可能的值:

真(True)     假(False)。

是的,布尔变量就是用于表示 逻辑 状态的变量,在逻辑运算中,我们只需要两种状态——真 或者 假。

这是编程语言中非常重要的状态判断基础。整个程序的细节部分处处都要判断表达式的状态是真还是假。

所以这是编程语句的基础。

python中有一个全局函数 bool 可以将其它开始数据类型和变量转换成布尔变量,使其它变量或对象的值变成 True 和 False 中的其中一个。

bool(obj)

此函数不是返回True就是返回False

具体,bool函数是怎么知道一个变量值换成布尔变量值后是True 还是False 的呢?

所有不是0 的数,都是 True

0   None  空格  ‘’   空的对象  都是 False

三、判断一个对象或表达式的状态是True还是False的代码

python的逻辑状态判断语句书写格式上非常灵活,最接近自然语言。

判断语句也叫做判断条件式或判断表达式。

对于数值型的变量或表达式可以按自然语言的写法来写:

0<m<=3

此判断语句表示:m是否大于0并且小于等于3

常用的判断符号(正式称呼为逻辑运算符)是:

== 是否等于

<  是否小于

>  是否大于

<=是否小于等于

>=是否大于等于

!= 是否不等于

如果 要连接 几个判断 语句,则可以使用逻辑连接关键字:

and  连接的两个判断语句要同时为True,整个连接后的判断语句组才为True,否则为False

or   连接的两个判断语句只要有一个为True,整个连接后的判断语句组都为True,否则为False

not  反转结果,为True的被反转为False,为False的被反转为True 这个关键词用在判断语句之前。

测试:

>>> a=3

>>> b=4

>>> c=5

>>> d=6

>>> print(a<b<c)

True

>>> print(a+b>6 and c<d)

True

>>> print(a+b<d and c<d)

False

>>> print(a+b<d or c<d)

True

>>> print(a!=b)

True

>>> print(not a!=b)

False

>>> print(a==b==c)

False

四、条件控制语句

条件控制语句用于通过判断条件式的状态结果来决定程序走向不同的流程块

基本语句格式为:

if 判断条件式1,将返回一个布尔值 :

如果上述条件式1返回True

就执行此部分代码块。

elif 判断条件式2,将返回一个布尔值 :

如果上述条件式2返回True

就执行此部分代码块。

elif ……

可以有多个elif……

else:

如果上面的条件式1,条件式2,至条件式n都返回False,

那么就会执行此部分代码块。

五、判断条件式是怎么得出布尔值并返回的。

1 数值比较

这个比较好理解,比数值大小即可。

2 字符串比较

通过逻辑运算符比较时,字符中的判断标准是:

如果 只是比较 == (是否相等),那么字符串完全一样则相等。

如果 是比较大小,则按字符的编码进行大小比较。

3 序列的比较

序列的比较的运算逻辑相对复杂

测试如下:

>>> lstA=[1,2]

>>> lstB=[2,1]

>>> lstC=[2,[1,2]]

>>> lstD=[2,[1,3]]

>>> print(lstA<lstB)

True

>>> print(lstB<lstA)

False

>>> print([1,2]==lstA)

True

>>> print(lstC==lstD)

False

>>> print(lstC>lstD)

False

>>> print(lstC<lstD)

True

六、错误断言

错误断言可以理解为一种特殊的条件控制语句,当然它也是错误陷阱的一种。

格式如下:

assert 判断条件式 ,如果判断条件式返回False那么要返回的字符串

注意assert后面没有括号,说明它并不是函数

说明assert是一种特殊的条件控制语句,如果它后面的【判断条件式】返回False,就返回第二个参数中预设的字符串,而不再继续执行它所在代码块后面的语句了。

只有当assert后面的【判断条件式】返回True,才会继续 执行它所在代码块后面的语句。

这些特征都说明assert不是一个函数,而是一个条件控制语句。

同时也起到了防止错误发生的错误陷阱的作用。

测试:

strA='孤荷凌寒'

assert strA=='我爱祖国','已经发现判断条件为False的情况,认定为参数错误,后面的操作就不会执行了。'

if strA=='孤荷凌寒':

print('你是孤荷凌寒')

else:

print(strA)

运行结果 :

assert strA=='我爱祖国','已经发现判断条件为False的情况,认定为参数错误,后面的操作就不会执行了。'

AssertionError: 已经发现判断条件为False的情况,认定为参数错误,后面的操作就不会执行了。

运行结果说明,程序抛出错误,此错误陷阱成功捕获了陷阱,而且此句代码后面的语句也没有再执行了。

进一步修改一下程序,再作测试:

strA='孤荷凌寒'

assert strA=='孤荷凌寒','已经发现判断条件为False的情况,认定为参数错误,后面的操作就不会执行了。'

if strA=='孤荷凌寒':

print('你是孤荷凌寒')

else:

print(strA)

运行结果:

你是孤荷凌寒

这一次没有抛出错误提示

而且执行了此句代码后的语句块。

——————————

今天整理的学习笔记完成,最后例行说明下我的自学思路:

根据过去多年我自学各种编程语言的经历,认为只有真正体验式,解决实际问题式的学习才会有真正的效果,即让学习实际发生。在2004年的时候我开始在一个乡村小学自学电脑 并学习vb6编程语言,没有学习同伴,也没有高师在上,甚至电脑都是孤岛(乡村那时还没有网络),有的只是一本旧书,在痛苦的自学摸索中,我找到适应自己零基础的学习方法:首先是每读书的一小节就作相应的手写笔记,第二步就是上机测试每一个笔记内容是否实现,其中会发现书中讲的其实有出入或错误,第三步就是在上机测试之后,将笔记改为电子版,形成最终的修订好的正确无误的学习笔记 。

通过反复尝试错误,在那个没有分享与交流的黑暗时期我摸黑学会了VB6,尔后接触了其它语言,也曾听过付费视频课程,结果发现也许自己学历果然太低,就算是零基础的入门课程,其实也难以跟上进度,讲师的教学多数出现对初学者的实际情况并不了解的情况,况且学习者的个体也存在差异呢?当然更可怕的是收费课程的价格往往是自己难以承受的。

于是我的所有编程学习都改为了自学,继续自己的三步学习笔记法的学习之路。

当然自学的最大问题是会走那么多的弯路,没有导师直接输入式的教学来得直接,好在网络给我们带来无限搜索的机会,大家在网络上的学习日志带给我们共享交流的机会,而QQ群等交流平台、网络社区的成立,我们可以一起自学,互相批评交流,也可以获得更有效,更自主的自学成果。

于是我以人生已过半的年龄,决定继续我的编程自学之路,开始学习python,只希望与大家共同交流,一个人的独行是可怕的,只有一群人的共同前进才是有希望的。

诚挚期待您的交流分享批评指点!欢迎联系我加入从零开始的自学联盟。

这个时代互联网成为了一种基础设施的存在,于是本来在孤独学习之路上的我们变得不再孤独,因为网络就是一个新的客厅,我们时刻都可以进行沙龙活动。

非常乐意能与大家一起交流自己自学心得和发现,更希望大家能够对我学习过程中的错误给予指点——是的,这样我就能有许多免费的高师了——这也是分享时代,社区时代带来的好福利,我相信大家会的,是吧!

根据完全共享的精神,开源互助的理念,我的个人自学录制过程是全部按4K高清视频录制的,从手写笔记到验证手写笔记的上机操作过程全程录制,但因为4K高清文件太大均超过5G以上,所以无法上传至网络,如有需要可联系我QQ578652607对传,乐意分享。上传分享到百度网盘的只是压缩后的720P的视频。

我的学习过程录像百度盘地址分享如下:(清晰度:1280x720)

链接:https://pan.baidu.com/s/1EPCjqgop7tvxUQGw3ziPqg  密码:trc9

Bilibili:

https://www.bilibili.com/video/av35838018/

喜马拉雅语音笔记:

https://www.ximalaya.com/keji/19103006/138474960

孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式的更多相关文章

  1. 孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解

    孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解 (今天由于文中所阐述的原因没有进行屏幕录屏,见谅) 为了能够使用selenium模块进行真正的操作,今天主要大范围搜索资料进行 ...

  2. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1

    孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...

  3. 孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块

    孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块 (完整学习过程屏幕记录视频地址在文末) 由于本身tesseract模块针对普通的验证码图片的识别率并不高 ...

  4. 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10

    孤荷凌寒自学python第八十天开始写Python的第一个爬虫10 (完整学习过程屏幕记录视频地址在文末) 原计划今天应当可以解决读取所有页的目录并转而取出所有新闻的功能,不过由于学习时间不够,只是进 ...

  5. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  6. 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6

    孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...

  7. 孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5

    孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...

  8. 孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4

    孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...

  9. 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3

    孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...

随机推荐

  1. Netbackup:nbu常见错误及故障解决

    Veritas Netbackup 提供了强大的故障响应功能, 能够有效及时的处理 各种备份故障.主要有备份状态码(status) .错误信息.报告信息及调试日志.下面我们主要针对备份状态码讲解下各种 ...

  2. 在Visual Studio 2010里面使用.NET 4.5里面新增加的HttpClient

    Install-Package Microsoft.Net.Http 为了能同步使用(也就是使用await等关键字) Install-Package Microsoft.Bcl.Async 确认在Vi ...

  3. javascript中的作用域与作用域链

    前几天,在写一段js代码时,出现了一些问题,调了很长时间也没有调通,其原因是,我在处理变量的作用域时错误地沿用了C++的作用域机制.因此我回炉了一次. 如果你使用过C++或java等一系列的面向对象的 ...

  4. cmd文件内容添加到文件内容命令

    今天需要因为有点SQL文件需要添加修改,但是感觉是做运维工作得当然不能一个一个来了.搞了半天bat才找到这个命令(真是一个不合格的运维) 例如:a.txt 内容添加到 b.txt (不是覆盖,而是在 ...

  5. tree树形

    /**  * tree  * @param menuBeans  * @param pid  * @return  */ public JSON  makeTree(List<MenuBean& ...

  6. linux文件属性更改命令

    chown 当我们要改变一个文件的属主,我们所使用的用户必须是该文件的属主而且同时是目标属组成员,或超级用户.只有超级用户的才能改变文件的属主. chown语法: chown  [选项]...[所有者 ...

  7. 想学习一下node.js,重新安装配置了node

    根据这个网站上的教程安装配置的,还不错一次就成功了.觉得安装没什么,就是配置路径的时候容易错. http://www.runoob.com/nodejs/nodejs-install-setup.ht ...

  8. nuxt generate静态化后回退问题

    之前线上的项目是nuxt build后的项目发布在服务器上,pm2来管理node的进程,nuxt还是运行在node的环境里. 这个方案用了半年左右,访问速度什么的确实很快,pm2管理下的node在wi ...

  9. java动态返回一个大对象里多个小对象map返回,el表达式用c:set拼接

    基于堆内存,先把map放到返回值里 Map _map=new HashMap(); modelAndView.addObject("pledgeInsurance",_map);/ ...

  10. LeetCode summary

    https://www.programcreek.com/2013/08/leetcode-problem-classification/ https://medium.com/algorithms- ...