孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式
孤荷凌寒自学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代码的书写规范与条件语句及判断条件式的更多相关文章
- 孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解
孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解 (今天由于文中所阐述的原因没有进行屏幕录屏,见谅) 为了能够使用selenium模块进行真正的操作,今天主要大范围搜索资料进行 ...
- 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1
孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...
- 孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块
孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块 (完整学习过程屏幕记录视频地址在文末) 由于本身tesseract模块针对普通的验证码图片的识别率并不高 ...
- 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10
孤荷凌寒自学python第八十天开始写Python的第一个爬虫10 (完整学习过程屏幕记录视频地址在文末) 原计划今天应当可以解决读取所有页的目录并转而取出所有新闻的功能,不过由于学习时间不够,只是进 ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6
孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...
- 孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5
孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...
- 孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4
孤荷凌寒自学python第七十四天开始写Python的第一个爬虫4 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 直接上代码.详细过程见文末屏幕录像 ...
- 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3
孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...
随机推荐
- PHPmailer群发Gmail的常见问题
博主小白一枚,phpmailer只会一些基本的用法,就这样一个邮件的群发功能也难住了我一周,下面把我遇到的问题给大家总结一下 1.Could not authenticate 首先,如果你没有使用循环 ...
- 正则表达式 /i /g /m /ig /gi
正则表达式中/i,/g,/ig,/gi,/m的区别和含义 /i (忽略大小写) /g (全文查找出现的所有匹配字符) /m (多行查找) / /ig(全文查找.忽略大小写)
- npm包发布过程
在上一章节中,我封装了一个基于react的树状组件,后来想把它发布到npm上,下面主要介绍一下发布过程中遇到的问题: 1.去注册npm账号,注册地址(https://www.npmjs.com), 再 ...
- C#中类的声明
一.C#中类的声明 在C#中必须先声明类,然后才能在程序中使用. 类的声明格式如下: [类的属性] [访问修饰符] class 类名称 [: 父类名]{ [成员修饰符] 类的成员变量或者成员函数 ...
- 第二天了,由于博主太分心了,看看就跑去研究了一下ssh和ufw以及nmap,现在急需记录一下啦,哈哈!
昨天看到了视频的ssh远程连接,因为我点电脑上装的是一个ubuntu的虚拟机,我根据视频看了一下,自己又试用了一下,我发现自己的ubuntu是能够远程到自己的Mac电脑上,一开始主要是因为自己不能连接 ...
- java 基础词汇 必须 第九天
Collection 集合 List 列表集合 Set 不重复集合 Linked 链表 Vector 线程安全集合 Hash 哈希值 tree 树型结构 Map 键值对集合 add 增加 remove ...
- Mantle--国外程序员最常用的iOS模型&字典转换框架
Mantle简介 Mantle是iOS和Mac平台下基于Objective-C编写的一个简单高效的模型层框架. Mantle能做什么 Mantle可以轻松把JSON数据.字典(Dictionary)和 ...
- jquery 操作ajax 相关方法
jQuery.get() 使用一个HTTP GET 请求从服务器加载数据. jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [dtaT ...
- 自定义扩展Compare比较方法
public static int Compare<T, V>(this T x, T y, Func<T, V> func) { return Comparer<V&g ...
- LEA指令与MOV指令区别
Tips: LEA指令与MOV指令的区别: ① MOV指令是 数据 传送指令-------传送数据 LEA指令是 有效地址 传送指令-------取偏移地址 ② MOV OPRD1 ...