• 孤荷凌寒自学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

    欢迎大家添加我为好友: QQ: 578652607
  • 相关阅读:
    日期时间格式或封装,已经互相转换,抽出来日后方便自己开发,之前用作在mpvue的框架开发小程序中
    微信小程序授权方法全能,当用户拒绝或者首次进来的,都可以弹起授权提示,主要是用wx.getSetting,还有wx.authorize,最后的wx.openSetting
    JavaScript封装自己的一个弹窗,是双按钮的,比较简单一些 ,其中引用了jQuery来写的方法,最后暴露出去,有更好的建议欢迎评论 。。。。
    最近学习mpvue框架开发微信小程序,把wepy框架的项目实现到mpvue中,知道其中的一些两者之间的区别
    JavaScript中历史搜索记录的实现,在h5页面,引用jQuery写法,使用localStorage存储
    vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单
    好好学习vue中 写了一些demo 希望自己能提升多一点 vue中实现父子组件之间的通信 相比我的上一篇非父子组件会简单些
    Java中Scanner类在nextInt()后无法输入nextLine()的问题
    mybatis中#{}和${}的区别及order by的sql注入问题
    Intellij常用设置及快捷键
  • 原文地址:https://www.cnblogs.com/lhghroom/p/9998351.html
Copyright © 2020-2023  润新知