孤荷凌寒自学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. centos6.x yum 安装 mysql5.6 mysql5.7

    先卸载低版本MYSQL yum remove mysql* rpm -ivh http://repo.mysql.com/mysql-community-release-el6.rpm yum ins ...

  2. Linux空间PHP开发环境小白教程(LAMP)

    租了一个云服务器, 但是只有linux系统,没有php开发环境, 只好自己摸索着一步一步安装啦. 本教程来自自学IT创E老师的Linux教程,想详细了解的可以去论坛找. 一.使用PUTTY登录服务器 ...

  3. 2018.7.22 Jdom与dom的区别

    SAX 优点:①无需将整个文档加载到内存,因而内存消耗少 ②推模型允许注册多个ContentHandler 缺点:①没有内置的文档导航支持 ②不能够随机访问XML文档 ③不支持在原地修改XML ④不支 ...

  4. singnal 13 was raised

    在app运行过程中按下home键或者其他原因app被挂起,socket连接不会断开,服务器为了节省资源,在一段时间后会主动关闭这个连接.当玩家再次切回到游戏后,前端并不知道这个连接已经断开了,继续通过 ...

  5. Mybatis-传参

    单参数传递 在mapper文件使用动态SQL时,传入参数的名称任意.不影响参数传入的结果 多参数传递 默认传递方式 自动将传入的参数进行排序,并用arg1…argeN或者param1…paramN赋值 ...

  6. Java - 静态方法的线程安全问题

    若该静态方法中有对某个静态属性操作,那么它就不是线程安全的,反之,若只对实例属性操作,那么它就是线程安全的.     补充说明,因为,静态方法不对特定的实例操作,只能访问静态成员.实例方法可对特定的实 ...

  7. mybatis的坑——不报错,就是不能committing,数据存不进数据库

    测试的时候会报空指针异常,在项目跑的时候会停止执行程序,不会出现异常. 经过一星期的排查与测试,最终找到错误,把mapper文件的映射属性名写错了. property属性名要与接收类的属性名保持一致. ...

  8. Centos7 使用LVM进行新加磁盘管理

    centos7使用LVM管理一块新的磁盘   注意!文中凡是带#的都是命令标志.   一些重要概念: LV(Logical Volume)- 逻辑卷, VG(Volumne Group)- 卷组, P ...

  9. 获取父窗口元素或者获取iframe中的元素(相同域名下)

    jquery方法 在父窗口中获取iframe中的元素 //方法1 $("#iframe的ID").contents().find("iframe中的元素"); ...

  10. oracle中的预定异常和自定义异常

    预定异常 oracle中的预定异常情况大约有24个,对于这种异常情况的处理,无须再程序中定义,可用oracle自动引发,常见的预定异常如下 异常 说明 ACCESS_INTO_NULL 在未初始化对象 ...