孤荷凌寒自学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. CSS select样式优化

    下拉选择菜单基本的CSS样式不怎么好看,通过一些简单的样式优化,就可以起到美化的作用了. <div class="sel_wrap"> <label>请选择 ...

  2. Linux开发常见问题:GCC:链接器输入文件未使用,因为链接尚未完成

    问:我在Linux中运行一个make文件去编译C语言代码,然后得到了如下的错误信息: gcc  -Wall  -fPIC  -DSOLARIS  -DXP_UNIX  -DMCC_HTTPD  -D_ ...

  3. Mybatis异常:java.lang.NumberFormatException: For input string: "S"

    MyBatis异常日志如下: Caused by: java.lang.NumberFormatException: For input string: "S" at sun.mi ...

  4. android design 新控件

    转载请标明出处: http://blog.csdn.net/forezp/article/details/51873137 本文出自方志朋的博客 最近在研究android 开发的新控件,包括drawe ...

  5. Data Warehouse 简介

    数据仓库定义 数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受:数据仓库(Data Warehouse)是一个面 ...

  6. java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流

    package com.swift.baseKnowledge; import java.io.File; import java.io.FileInputStream; import java.io ...

  7. 1060: [ZJOI2007]时态同步

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3610  Solved: 1521[Submit][Status][Discuss] Descript ...

  8. hdu_2837_Calculation(欧拉函数,快速幂求指数循环节)

    Assume that f(0) = 1 and 0^0=1. f(n) = (n%10)^f(n/10) for all n bigger than zero. Please calculate f ...

  9. exa命令详解

    exa 是 ls 文件列表命令现代化替代品. 官网:https://the.exa.website/ GitHub:https://github.com/ogham/exa 后续整理中……

  10. PHP 基础知识总结

    PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本.HTML.JavaScript代码和 PHP 代码 PHP 代码在服务器上执行,结果以纯 HTML 形式返 ...