精华内容
下载资源
问答
  • 教与学优化算法(Teaching–Learning-Based Optimization, TLBO)是由Rao等提出的新型群智能算法,受老师指导学生和学生间互助学习的启发而产生,工作过程分为两部分:第一部分为“阶段”,第二部分为“阶段”。...

    一、理论基础

    教与学优化算法(Teaching–Learning-Based Optimization, TLBO)是由Rao等提出的新型群智能算法,受老师指导学生和学生间互助学习的启发而产生,工作过程分为两部分:第一部分为“教阶段”,第二部分为“学阶段”。“教阶段”意味着向教师(当前最优解)学习,“学阶段”意味着通过学习者(所有个体)之间的互动进行学习。

    1、“教”阶段

    老师为最优适应度个体,学生通过向老师学习提高成绩,其数学表达式为: x n e w i = x o l d i − r i ⋅ ( x t e a c h e r − T F ⋅ x m ) (1) x_{new}^i=x_{old}^i-r_i\cdot(x_{teacher}-TF\cdot x_m)\tag{1} xnewi=xoldiri(xteacherTFxm)(1) x m = 1 n ∑ i = 1 n x i (2) x_m=\frac1n\sum_{i=1}^nx_i\tag{2} xm=n1i=1nxi(2)其中, x n e w i x_{new}^i xnewi为第 i i i个更新后的学生个体; x o l d i x_{old}^i xoldi为第 i i i个当前学生个体; r i r_i ri [ 0 , 1 ] [0,1] [0,1]间的随机数; T F TF TF [ 1 , 2 ] [1,2] [1,2]之间的随机整数; x m x_m xm为种群均值。

    2、“学”阶段

    学阶段采用随机选择学习对象的方式实现学生间的互助学习以进一步提高成绩,可表示为: x n e w i = { x o l d i − r 1 ⋅ ( x i − x j ) , f ( x i ) < f ( x j ) x o l d i − r 1 ⋅ ( x j − x i ) , f ( x i ) > f ( x j ) (3) x_{new}^i=\begin{dcases}x_{old}^i-r_1\cdot(x^i-x^j),\quad f(x^i)<f(x^j)\\x_{old}^i-r_1\cdot(x^j-x^i),\quad f(x^i)>f(x^j)\end{dcases}\tag{3} xnewi={xoldir1(xixj),f(xi)<f(xj)xoldir1(xjxi),f(xi)>f(xj)(3)其中, r 1 r_1 r1 [ 0 , 1 ] [0,1] [0,1]之间的随机数; f ( x j ) f(x^j) f(xj)为第 j j j个学生个体的适应度值; f ( x i ) f(x^i) f(xi)为第 i i i个学生个体的适应度值。

    3、算法流程图

    TLBO算法流程图如图1所示。
    在这里插入图片描述

    图1 TLBO算法流程图

    二、实验结果及分析

    将TLBO与樽海鞘群算法(SSA)和灰狼优化算法(GWO)进行对比,测试函数如表1所示。设置种群规模为30,最大迭代次数为1000,每个算法独立运算30次。

    表1 基准测试函数

    在这里插入图片描述
    结果显示如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    函数:F1
    SSA:平均值:1.2871e-08,标准差:2.6866e-09,最差值: 1.808e-08,最优值:8.7744e-09
    GWO:平均值:7.0078e-59,标准差:1.9019e-58,最差值: 1.0487e-57,最优值:8.0281e-62
    TLBO:平均值:1.6844e-170,标准差:0,最差值: 1.6809e-169,最优值:9.9607e-174
    函数:F2
    SSA:平均值:0.96884,标准差:0.89007,最差值: 3.2827,最优值:0.064748
    GWO:平均值:1.2326e-34,标准差:2.3492e-34,最差值: 1.3183e-33,最优值:9.0007e-36
    TLBO:平均值:1.2691e-85,标准差:2.3615e-85,最差值: 1.2337e-84,最优值:6.9339e-87
    函数:F3
    SSA:平均值:247.8962,标准差:163.9269,最差值: 766.6576,最优值:68.0242
    GWO:平均值:1.5514e-14,标准差:8.1361e-14,最差值: 4.4626e-13,最优值:9.3569e-19
    TLBO:平均值:1.976e-40,标准差:4.0853e-40,最差值: 1.9064e-39,最优值:3.6016e-44
    函数:F4
    SSA:平均值:7.7903,标准差:3.4597,最差值: 16.155,最优值:3.0924
    GWO:平均值:2.3051e-14,标准差:2.9416e-14,最差值: 1.1617e-13,最优值:1.6626e-16
    TLBO:平均值:3.2478e-70,标准差:3.329e-70,最差值: 1.2316e-69,最优值:4.2343e-71
    函数:F5
    SSA:平均值:0.10189,标准差:0.033475,最差值: 0.16509,最优值:0.043386
    GWO:平均值:0.00075226,标准差:0.00040731,最差值: 0.0018118,最优值:0.00024967
    TLBO:平均值:0.00062077,标准差:0.00023225,最差值: 0.0012836,最优值:0.00023272
    函数:F6
    SSA:平均值:60.5266,标准差:19.6333,最差值: 98.5006,最优值:23.879
    GWO:平均值:2.0843e-14,标准差:4.597e-14,最差值: 2.2737e-13,最优值:0
    TLBO:平均值:13.0691,标准差:6.8883,最差值: 32.7931,最优值:0
    函数:F7
    SSA:平均值:2.2055,标准差:1.0388,最差值: 5.9781,最优值:1.9879e-05
    GWO:平均值:1.6283e-14,标准差:2.9991e-15,最差值: 2.2204e-14,最优值:1.1546e-14
    TLBO:平均值:4.5593e-15,标准差:6.4863e-16,最差值: 7.9936e-15,最优值:4.4409e-15
    函数:F8
    SSA:平均值:0.0086958,标准差:0.010707,最差值: 0.034458,最优值:2.732e-08
    GWO:平均值:0.0026423,标准差:0.0057546,最差值: 0.021293,最优值:0
    TLBO:平均值:0,标准差:0,最差值: 0,最优值:0
    

    结果表明,TLBO除了在F6表现不佳之外,其余七个测试函数均优于其他智能算法,这说明TLBO算法具有很好的寻优能力。

    三、参考文献

    [1] Rao R V, Savsani V J, Vakharia D P. Teaching–Learning-Based Optimization: An optimization method for continuous non-linear large scale problems[J]. Information Sciences, 2012, 183(1): 1-15.
    [2] 孙凤山, 范孟豹, 曹丙花, 叶波, 刘林. 基于混沌映射与差分进化自适应教与学优化算法的太赫兹图像增强模型[J]. 仪器仪表学报, 2021, 42(4): 92-101.

    展开全文
  • 课程简介:51单片机的教程及开发板真的很多,我曾经也从零单片机,看过的视频教程及玩过的开发板也比较...对于本身就没有C语言基础的初学者,不进行解释,给他领悟个三夜都不会领悟出来。即使真的领悟出来那也...

    课程简介:

    51单片机的教程及开发板真的很多,我曾经也从零学单片机,看过的视频教程及玩过的开发板也比较多,但很多都是为了卖发板而做视频教程。从头到尾的就每个模块做些例子,或者就送些例子,而例子中所涉及到的C语言并没有详细的、系统的讲解。对于程序及语句的执行都没有进行详细的讲解,这对于初学者非常的不利。对于本身就没有C语言基础的初学者,不进行解释,给他领悟个三天三夜都不会领悟出来。

    即使真的领悟出来那也是整整浪费了三天三夜,这只是做了个比较。但如果有个人领着你,带这你,跟你解释这些原理及程序如何执行,那你还要三天三夜吗?这大大的提高了学习的效率。对于一个C语言本身就不了解的人,你说他能去编写出一个很炫很智能的程序吗?没有C语言能力,别提如何去编写程序,如何去让单片机完成你想要的功能。所以我在这样的情况下,深思熟虑之后,决定做出了此套视频教程。大家可以从下面的目录中都可以看出,讲解到的C语言内容较多,甚至单独安排了C语言课程。讲解过程尽量以一种通俗易懂方式,当然个人能力有限,能够详细的讲解则必须尽量跟大家讲解。

    因为我曾经也是初学者,我很明白大家的心情。开发板它是个平台,主要是用来学习程序、验证程序,同样的效果可以通过不同的多种方法实现。这是我对于开发板的定义。当然开发板设计的有好有坏,但我设计的宗旨是:模块与单片机的通信及模块与模块之间的通信尽可能的不要通过杜邦线及短路帽连接。

    这样做的优点:第一:减小硬件上的接触不良;第二:杜绝硬件上连接操作的错误;第三:通过程序去选择模块,加强C语言的编写能力;第四:整体做为一个系统,更接近实际项目的开发。

    教程宗旨:第一:介绍硬件;第二:介绍涉及到C语言;第三:实际编写程序、调试程序。每节课严格按照三步走,要做到让大家从原理上到应用上都明白。这才是教程的意义。

    展开全文
  • 对于一个0基础的学员来说,学习专业的代码和技术可谓是天方夜谭,再好的培训班也是没有办法在三个月内速成一名高级软件测试工程师的,所以培训班真正是不到什么东西的,也不会真正去你比较有技术含量的东西。...

    软件测试这个行业入门门槛不高,对专业也没有限制,相对开发来说还是比较简单的。一般情况下,作为零基础入门的初学者来讲,三个月基本可以掌握软件测试的基本工作内容。如果有一定的编程基础或者有一定的软件测试基础,其实学习软件测试周期会更加短。

    本人是一年前转型做软件测试的,说说我的亲身经历吧。我在做软件测试之前是做销售行业的,之前写的文章有提到过,因为销售行业竞争太大自己不善言辞,并且每个月都有不同的业绩考核,导致身心疲惫,所以又在家人的指点下,选择了软件行业,并且参加了培训机构的学习,成功入行,目前来算的话,也是在有半个月就一年了。
    在这里插入图片描述
    言归正传,说说我这一年以来,对软件测试行业的了解吧。其实软件测试真的没有大家想的那么难,虽然我在学习的过程中,从软件测试的基础理论,到后面的Linux,前端知识的了解,数据库知识的掌握,再到后面的自动化测试,接口测试,性能测试一系列的学习。然而我现在公司能让我用到的,最多的也就是性能、接口测试用的比较多。并且我在职场这一年里面,我也加了不少的技术群,并且在群里也和同行在交流,发现好像大多数的同行,和我做的东西都差不多。不过也有一些同行在做自动化测试。可能真的是和项目有关系吧。

    我在学习软件测试的那段时间里面,其实老师为了加深我们对技能的掌握,把很多企业级的项目拿给我们来做,让我们加深印象,让我们理论+实战相结合,并且我在面试的过程中,问的大多数问题,都是老师上课提到的一些问题。所以我在面试的时候,很自然而然就面试通过了。

    再说说刚进公司的那段时间,其实挺担心自己不会做项目,因为毕竟是转行过来的,没有真正的公司呆过,所以内心还是比较虚的。不过好的是,公司领导让我先熟悉了三天业务以及公司测试团队的框架等。在熟悉的那段时间里面,我深感到公司里面的流程还没有我在学习的时候,做的那些项目流程正规。其实说白了就是,学习是体系化的学习,但是实际工作中,几乎没有想象的那么繁琐,无非就是先给我一个需求文档,然后我让熟悉以后,写测试用例,基本上之前需求评审都没有参加,好在我学习的过程中,老师讲过什么是一句话需求,和在没有参加需求评审的过程的时候,如何去编写测试用例。然后等我用例写完以后,直接就开始进行测试了。因为之前公司正规的接口文档,我就找研发要了一份大概的,里面的数据,参数都不完全,没办法,我就自己使用抓包工具,自己拿数据,进行测试。那之后的什么测试报告啊,提交的bug啊,都很正常,也都是学习期间学到的。

    虽然现在薪资还算不错,可能过完年要涨薪了,17k+吧但愿,不过软件测试确实很轻松,而且我在学习的那些内容,完全支撑的起来在公司里面的业务,以及技术。这一点大家大可放心。不过还要说的一点就是,学习嘛,是给自己学,不是给别人学,最好是学习的过程中,多多练习,多多思考,这样自己提升的才算比较快。

    市面上现在很多培训机构,课程内容参差不齐,我之前也了解了很多,其实方向都是一样的,但是具体讲的好不好,我目前也就认可我选择的这个,毕竟老师都是企业在职的,教的东西都很详细,也很认真。可能很多人看到这里,就会觉得我打广告什么的。其实说我打广告也好,说我是托也好,毕竟我的经历是真实的,不参与任何虚假。互联网上本来什么人都有,键盘侠很多,我都不在乎这些,今天说这么多,只是想明确一下,想要在这个行业发展的同学,不用担心找不到测试工作,努力学习,认真学习,都会找到好的工作。

    最后感谢学院老师们的指导,祝学院越办越好。

    参加培训时一定考虑到以下几点,如果你能早点了解清楚这些,会给你的人生换一种可能性。

    一、怎么选择正规的软件测试培训?

    虽说现在市面上存在软件测试培训三个月骗局,但还是有正规的软件测试培训的,要学会区分。现在IT行业发展迅猛,对于软件测试的人员需求也原来越高,很多培训机构推出软件测试培训的课程,也算是应行业要求。判断一个培训机构是不是正规的,可以看看这几点。

    1、明确的告诉你,这就是软件测试培训。软件测试培训并不是什么见不得人的行业,所以也没必要藏着掖着。 正规的培训机构都会明确的告诉学员,我们这就是培训机构,学员进来就是学习的,课程机构,校园环境,收费标准,就业模式等等一系列的规章制度都是非常明确且正规的。

    2、贷款。 很多学员看到贷款两个字就会怕,特别是看到培训机构和贷款两个字联系在一起就觉得是诈骗。软件测试培训的费用说多不算多,但说少也不算少,会有一些学员不能在第一时间拿出来。对于无法在第一时间拿出学费,又确实想要学习的学员来说,贷款只是缴纳学费的一个选项。正规的培训机构在跟学生沟通贷款相关事宜的时候,会明确的告诉学生,这是贷款,需要学员按时偿还,偿还的方式,金额,利息的多少等等这些细节都会清楚明白的告诉学员,不会在这上面做手脚坑学生。学生可以选择贷款,也可以选择其他的方式。

    二、软件测试培训是浪费时间和金钱吗?

    对于真的想要从事这一行业的学员来说,参加正规的软件测试培训是很有必要的。

    大家不要因为一些不良培训机构的行为和骗局,就对培训机构产生偏见,正规的培训机构是能够学到东西的,有不少的同学通过软件测试培训改变了自己的职业方向,获得了更高的收入。

    三、如何选择适合自己的靠谱培训机构

    适合自己的才是最好的!

    1.了解课程内容是否真的是自己所需要的

    前面也说到了,适合自己的才是最好的。在明确了自己要参加培训之后,还要明确自己培训的目的,是要就业,还是提升,还是解决某个针对性问题,这样才能找到适合自己的课程。现在软件测试要求越来越高。建议选择综合实力强的。从项目来看,行业建议选择金融 电商 企业管理比较火的项目为后面找工作做好准备。面试问得最多的还是项目问题,大纲涵盖面广的,要覆盖功能测试、接口测试、自动化测试、性能测试、就业服务五大模块。这样你在找工作的时候才会有竞争力!

    我心目中理想的培训内容

    自动化测试

    • 常见开源框架深入讲一遍,包括实现原理,源码解析
    • 用 Debug 模式演练复杂自动化测试执行的过程
    • 从零到一设计一个复用性高的测试框架,比如像 httprunner 那样的,详细描述设计思路
    • 二次开发开源的原生框架
    • 结合 Docker、k8s、jenkins、git 搭一套持续集成的自动化测试流程

    性能测试

    • Jmeter 的全套使用,常见插件的使用,还有就是监控平台、持续集成,这些一般都有
    • Jmeter Dubbo、TCP、Socket 性能测试
    • Jmeter 二次开发请求取样器,满足非常见协议(自定义加密算法的协议)的场景
    • Jmeter 二次开发其他控件
    • Linux 监控命令,stat 家族、top 家族等等,具体可以参考性能测试30讲,那个真的讲的很好,我自己也有写对应的栏目
    • 全链路压测实战
    • 生产环境下的流量回放
    • 容量评估测试
    • 压力测试
    • 中间件监控,常见调优参数
    • 等等

    2.课程中是否所有的内容都真正贴近测试?

    靠谱和负责的IT培训机构,它的课程体系一定是在持续更新的,对于IT行业来说,技术更新日新月异,市场需求、企业用人需求也会一直进行着变更,那么相对应的,培训机构就需要对课程体系进行持续更新,和市场进行完美的结合、匹配。

    3.教室人数及授课方式

    现有些培训机构大多为了赚钱而花重金在搜索引擎上大量打广告,以起到广泛招生的效果,但实际教育水平真心可以用“黑”来形容。 当一个教室里乌泱泱坐满了五六十甚至更多的学生后,那学习效果和小班制的二十几人想比,哪种用心付出的成本更高、学习效果会更好,不言而喻。 当五六十人对着一个投影仪的大屏幕看着早已录好的视频,遇到问题不知该问谁,和二十几人面对着一个具有十几年经验的讲师,有不懂的随时发问,哪种学习氛围和学习效果更好,自然一目了然。

    4.了解每个学员的薪资和就业情况

    最好是了解所有学员的就业信息,能不能保证所有的学员都能就业。不要光看那种小概率的高薪,毕竟薪水这一块还是跟自身的学历专业背景、和努力程度、以及情商表达能力等多方面因素相关的,所以你得看大概率的东西。绝大多数培训机构都会告诉你推荐就业,但核心问题就在于,如果就不了业,或者就业达不到承诺的薪资,培训机构会不会承担相应的责任,而不是绝对保证你就业,这样的一句空话。

    5.保障就业

    当下很多培训机构只管销售和收钱,钱一收就开始糊弄,糊弄完教学糊弄就业,最后找不找得到工作都是自己的事。

    那么在前期考察的时候你千万确认以下几件事情:

    1)是否会签署保障就业协议?
    2)是否承诺了最低保障月薪?
    3)是否有就业方面培训课程?
    4)是否有就业老师专职负责你的就业?

    如果没有这些服务的,你就可以直接把他pass掉了。

    6.老师的背景,是否真的在大厂有过长时间工作经验。

    毕竟纸上得来终觉浅,有些经验是只有真正在一线工作过才知道的。

    四、了解参加软件测试培训解决的是什么问题?

    • 知识成体系,能及时解决实战项目、学习过程中遇到的障碍,效果可控。
    • 培训时都有针对性训练和练习,学习氛围更浓厚,跟同学探讨问题,对拓展思路有很大帮助。
    • 让同学们清晰了解职业发展规划,明确自身定位,找到适合自身发展的工作。
    • 效率问题,可能需要花费半年学完的东西给你集中学习,定时定量按计划突破。

    五、培训班真的能学到技术吗?

    对于一个0基础的学员来说,学习专业的代码和技术可谓是天方夜谭,再好的培训班也是没有办法在三个月内速成一名高级软件测试工程师的,所以培训班真正是学不到什么东西的,也不会真正去教你比较有技术含量的东西。

    因为教你太难太有深度的东西,你根本都不懂,这样会导致你产生厌学的心理,也会觉得培训班的老师水平很差,导致产生售后的问题。所以教给你的都是一些基本的皮毛,这些东西90%的学员自己通过书本资料的阅读都能吸收,老师再进行稍微的延伸,便成为了学员眼中“真正的技术”,并且培训导师会反复给学员宣导“测试过程中很多工具是用不到的,很多东西学了也没用,学习几样简单的基本就能应付日常工作了”,让学员提前满足,也为导师减轻麻烦。

    这也就是为什么很多学员成功入职企业以后,工作不到一个月的时间就纷纷被企业辞退的原因,因为真正的技术都没有学到,却被企业认为是资深的工程师招入,通过一段时间的实践让企业最终发现不是自己想要的人,现在可以理解为什么企业招不到人,而很多工程师找不到工作了吧。

    六、自学资源

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的支持和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    包括软件学习路线图,50多天的视频教程、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,自动化测试平台,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……感兴趣的小伙伴可以关注一下我的技术分享公粽号:程序员一凡 取。

    结语:只想说一点,你如果想学测试,下定决心了那就努力干,立个flag,实在没有头绪,真想报班,那就报班。但是有一点,别以为报了班,人家就能给你分配合适的工作,一切从自身出发,还是那句话:师傅领进门,修行在个人。最后不知道如何斟酌的可以关注私聊我(乐于回答)

    展开全文
  • Sublime Text是为程序员准备的优秀的文本编辑器之一,它在Windows、Linux和Mac OS大主流桌面操作系统上均能被运行。当然,这并不表示Sublime Text是完美的,它还有不少缺陷,而最让人深感遗憾的是,Sublime Text...

    为了学习Python,使用Python开发应用程序,手头必须有得力的工具。在笔者看来,Python和PyCharm是最基本的学习和开发工具。如果要成为教育家或作家型的Python程序员,那么还必须准备Jupyter Notebook。

    这里所说的Python,准确地说,是指Python程序的“解释器(Interpreter)”,它相当于C语言的“编译器”。而PyCharm是编写和调试Python程序的集成开发环境,被简称为“IDE”,它相当于Visual C++6.0。

     

    Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

    Python是由Guido van Rossum于1989年年底发明,并于1991年公开发行的。像Perl语言一样,Python源代码同样遵循GPL(GNU General Public License)协议。这里所说的Python不是指语言本身,而是指Python程序的“解释器”,它通常有Python 2.x和Python 3.x版本之分,两者有较大区别。如果要学习Python语言,则必须首先安装Python解释器。如果你是Python初学者,那就不存在烦人的版本选择问题,笔者建议直接从Python 3.x开始学习。

    以下所说的Python均是指Python解释器。

    如果想知道在计算机上已经安装的Python是哪个版本的,则可通过在终端方式下使用以下方法获得。

    1.1 查看Python版本的第一种方法

    打开Windows操作系统的【开始】菜单下的【命令输入框】,如图1-2所示。

    首先在命令输入框内输入“cmd”并回车,即可进入终端状态,如图1-3所示。

    图1-2 命令输入框

    图1-3 终端状态(命令行)

    然后输入“python -V”并回车(注意是大写的V)。执行该命令后,即可看到在计算机上安装的Python的版本信息,如图1-4所示。

    图1-4 Python版本信息查看结果

    由图1-4可知,在当前计算机上安装的是Python 3.6.3版本。

    2.查看Python版本的第二种方法

    直接按“Win(Windows键)+R”组合键,即可进入如图1-5所示的命令行输入状态。

    然后输入“cmd”并回车,也可以进入如图1-3所示的终端状态。

    图1-5 通过按“Win+R”组合键进入命令行输入状态

    余下的步骤与第一种方法相同。

    在安装Python 3.x的同时,也安装了Python官方的IDLE,它是一个相对比较简陋的Python程序开发调试环境。不过,对于初学者而言,IDLE也是一个功能基本完备的集成开发环境(IDE)。在后续章节中,将会详细讨论如何使用IDLE。

     

    1.2. 常用的Python集成开发环境

    Python的集成开发环境有多种,它们各有千秋,但综合起来,被公认为最优秀的是PyCharm。当然,学习者可以根据各自的喜好选择适合自己的Python集成开发环境。

    在讨论如何安装PyCharm之前,首先简要地介绍以下几种常用的Python集成开发环境。

    1.PyCharm

    PyCharm是由JetBrains打造的一款Python IDE。

    PyCharm具备大多数Python IDE所具有的功能,比如,调试、语法高亮、项目管理、代码跳转、智能提示、代码补全、单元测试、版本控制等。PyCharm还提供了一些特别的功能,例如,用于Django开发的功能、支持Google App Engine的功能等。

    更让人称奇的是,PyCharm支持IronPython。

    PyCharm的官方下载地址为http://www.jetbrains.com/pycharm/download/。

    JetBrains提供多种版本的PyCharm。免费版本为Community版本,即社区版本,它是轻量化的集成开发环境,主要用于科学计算,但对学习和一般的应用开发完全适用、够用。全功能版本为Professional版本,即专业版,它支持Web应用开发,但不是免费的,而且价格不菲,通常让学习者难以承受。

    2.Sublime Text

    Sublime Text也是Python集成开发环境,它具有漂亮的用户界面和强大的功能。Sublime Text的主要功能包括拼写检查、书签、完整的Python API、Goto功能、即时项目切换、多选择、多窗口等,还支持代码缩略图、Python的插件,可自定义键绑定、菜单和工具栏。

    Sublime Text是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS等操作系统。借助Sublime Text 2的插件扩展功能,可以轻松地打造一个完善的Python集成开发环境。以下推荐几款常用的插件,当然插件不止这些。

    · CodeIntel——自动补全+成员/方法提示。

    · SublimeREPL——用于运行和调试一些需要交互的程序,如使用Input()的程序。

    · Bracket Highlighter——括号匹配及高亮。

    · SublimeLinter——代码PEP 8格式检查。

    Sublime Text是为程序员准备的优秀的文本编辑器之一,它在Windows、Linux和Mac OS三大主流桌面操作系统上均能被运行。当然,这并不表示Sublime Text是完美的,它还有不少缺陷,而最让人深感遗憾的是,Sublime Text既不免费也不开源。

    3.Eclipse+PyDev

    作为集成开发环境,Eclipse+PyDev是完全开源的。Eclipse最初是被用于开发Java程序的,但是,它的外挂功能特别强大,可通过PyDev等插件形式,实现对Python等多种语言的支持。必须指出的是,相对于PyCharm而言,安装Eclipse+PyDev的过程是比较烦琐的。以下是安装Eclipse+PyDev的大致步骤。

    1)安装Eclipse

    可以在Eclipse的官方网站Eclipse.org上找到并下载Eclipse。下载时,必须选择合适的Eclipse版本,比如,Eclipse Classic。下载完成后,将它解压到某个指定的目录。当然,在执行Eclipse安装之前,必须首先安装Java运行环境,即必须安装JRE或JDK。可以在http://www.java.com/en/download/manual.jsp网站上找到JRE。下载JRE,然后安装它。

    2)安装PyDev

    运行Eclipse之后,选择【Help】→【Install new Software】命令,即可安装所需的插件,这里主要是指PyDev。从此,Eclipse具有了开发Python应用程序的功能。

    3)设置PyDev

    设置PyDev的过程有点烦琐。幸运的是,在网上可以找到很多关于设置的资料,所以在这里不再赘述设置问题。

    1.3 安装和设置Python

    1.3.1 获取Python

    可从官方网站上免费下载最新版本的Python,不过,下载时一定要注意与计算机操作系统的匹配关系。假如操作系统是Windows XP或更早的版本,则不能安装Python 3.5以上版本。另外,由于Python有Windows、Linux、Mac OS等多种版本,因此,千万不要下载与操作系统不对应的版本。也就是说,在选择版本时一定要充分考虑安装环境,如图1-6所示。

    图1-6 Python的安装环境选择

    Python的官方下载地址为https://www.python.org/。进入官方网站后的界面如图1-7所示。

    图1-7 Python官方网站主界面

    将鼠标指针移至【Downloads】菜单,出现图1-8所示的下载页面。

    图1-8 Python的下载页面

    选择【Windows】后,出现类似于图1-9所示的版本选择界面。

    图1-9 版本选择界面

    通过下翻找到并选择其中的【Python 3.6.4】,然后下翻找到Files部分,出现选择32位或64位Python 3.6.4的界面,如图1-10所示。

    图1-10 选择32位或64位Python 3.6.4的界面

    接下来,根据计算机操作系统是32位还是64位的实际情况进行合理选择。如果操作系统是64位的,则选择32位或64位的Python版本均可。由于笔者所用的操作系统是64位的Windows 7,所以,此处选择的是64位的Python安装程序,如图1-11所示。

    图1-11 64位的Python安装程序

    单击该文件,即可进入下载状态。不过,在下载前必须指定某个文件夹作为保存下载文件的路径,例如,图1-12中指定的文件夹为“K:\Python及其资料”。单击【下载】按钮,经数秒后,即可完成下载。

    图1-12 指定下载文件保存路径

    1.3.2 安装Python

    打开被下载的文件所在的文件夹,找到刚刚下载的Python安装文件,也就是python-3.6.4-amd64.exe,如图1-13所示。

    图1-13 找到下载后的文件

    双击python-3.6.4-amd64.exe文件,即可进入安装界面,如图1-14所示。

    图1-14中出现两种安装方式:【Install Now】(立即安装)和【Customize installation】(自定义安装),前者为默认安装方式。

    图1-14 Python安装界面

    ·【Install Now】:默认安装方式,安装的路径也是默认的。这种方法相对简单,只要按默认设定一步一步地往下操作即可完成安装。

    ·【Customize installation】:自定义安装方式,该方式可以指定安装的路径,也可选择要安装的模块与功能。特别需要提醒的是,如果要自定义安装Python的路径,那么必须选择该安装方式。

    这里以自定义安装方式为例,详细介绍安装Python的过程。

    首先,勾选【Add Python 3.6 to PATH】复选框,通过它将Python 3.6的路径信息加入环境变量PATH中(该变量在后面会被提到),如图1-15所示。

    图1-15 勾选【Add Python 3.6 to PATH】复选框

    这里必须补充和提醒的是,在安装前,必须在计算机上新建安装Python的文件夹,例如,在D盘上新建一个名为“python364”的文件夹,如图1-16所示。

    图1-16 新建安装Python的文件夹

    然后,单击【Customize installation】链接,出现图1-17所示的Python基本选项设置界面。

    图1-17 Python基本选项设置界面

    从图1-17中可以看出,默认勾选了全部特性,用户可自行选择相关特性。这些特性包括Documentation(说明文档)、pip(安装器)、tck/tk and IDLE(图形库和IDLE)、Python test suite(测试套装)、py launcher(Python启动器)、for all users(对所有用户)。

    接着,单击【Next】按钮继续安装,出现图1-18所示的Python高级选项设置界面。

    图1-18 Python高级选项设置界面

    从图1-18中可以看出,默认勾选了3个高级选项,它们分别代表文件关联、快捷键和将Python加入环境变量。如果需要,则可勾选【Install for all users】复选框,此时会自动勾选【Precompile standard library】复选框。【Customize install location】栏目用于自定义安装路径(文件夹)。将【Customize install location】栏目下的路径通过右侧的【Browse】按钮切换为指定的路径“D:\python364”,如图1-19所示。

    图1-19 指定Python安装路径

    上述这些设置完成后,单击【Install】按钮,即可开始安装,安装进程如图1-20所示。

    图1-20 Python安装进程

    完成安装后,出现图1-21所示的提示信息界面,表示Python安装成功。

    图1-21 Python安装成功界面

    单击【Close】按钮,圆满完成安装过程。也就是说,学习Python的基本环境已经被建立,可以开启学习之路了,这是不是让人有点激动呢?

    完成安装后,在计算机的【开始】菜单中,如果出现图1-22所示的内容,则说明安装大功告成!当然,完成Python的安装后,还必须进行一些必要的设置,下一节将讨论设置问题。

    图1-22 Python出现在【开始】菜单中

    1.3.3 设置Python

    在通常情况下,按照1.3.2节所述步骤完成Python的安装后,不需要再做任何设置。但是,也有可能出现需要设置的情况,主要就是设置环境变量。那么,如何判断需不需要设置呢?可通过查看环境变量加以确定。

    如何查看环境变量呢?

    将鼠标指针移至桌面的“计算机”或“我的电脑”图标上,然后单击鼠标右键,在弹出的快捷菜单中选择【属性】命令,出现图1-23所示的系统属性界面。

    在图1-23中,可以看到计算机所用的操作系统等信息。单击左侧的【高级系统设置】,出现图1-24所示的高级系统设置界面。

    在图1-24所示的【高级】选项卡中,可以看到【环境变量】按钮。单击【环境变量】按钮后,出现图1-25所示的环境变量设置界面。

    图1-23 系统属性界面

    图1-24 高级系统设置界面

    图1-25 环境变量设置界面

    在【系统变量】选项组中,如果能看到图1-26所示的环境变量信息,则说明Python已经安装完成,并且不再需要做环境变量设置。

    图1-26 当前环境变量信息

    当然,还有一种更加简便的办法可以直接判断是不是需要设置环境变量:在【cmd】输入框内输入“python”,如果出现图1-27所示的界面,主要是出现Python的“>>>”终端提示符,则说明Python已经安装成功,不需要设置环境变量了。

    图1-27 Python的终端方式

    如果上述两种方式都不行,也就是说,没有出现所说的情况,则需要手动设置环境变量。

    对于Python而言,所谓设置环境变量,其实就是设置Path或PYTHONPATH参数。

    为什么要设置环境变量?这是一个很有意义的问题!环境变量的作用就是使得Python程序在运行时能找到相应的路径,包括Python.exe所在的路径及脚本程序所要使用的外部模块所在的路径。

    下面一起讨论如何设置环境变量。

    对于初学者而言,通常有以下两种方式可以设置环境变量。

    1.设置环境变量的第一种方法

    通过“cmd”命令添加Path环境变量。

    在【开始】菜单下的命令输入框内输入“cmd”后进入终端状态,然后直接输入以下命令:

    接着按回车键。

    在上述命令中,“D:\Python3646”是Python的安装路径,它就是需要被添加的设置项;而“%path%”表示保留环境变量Path原有的设置值,将D:\Python3646添加在它们之后,如图1-28所示。

    图1-28 编辑环境变量

    需要提醒的是,使用该方法设置的环境变量是临时有效的。在重启计算机后,新设置的内容自动被放弃。

    2.设置环境变量的第二种方法

    在【环境变量】中添加Python路径。

    单击图1-26中的Path变量,在这个变量现有值(字符串)的最前面或最后面(当然,也可以是中间位置)手工输入Python路径“D:\python3646\”,注意各路径要用分号“;”隔开,如图1-29所示。

    图1-29 环境变量Path的编辑

    最后,给出一幅完整的环境变量设置示意图,如图1-30所示。

    至此,就可以使用Python语言编写Python程序了。请大胆尝试,用Python程序向世界发出“Hello,world!”的问候吧!

    图1-30 完整的环境变量设置示意图

    思考与实践

    1.请用各种方式查询10份以上关于Python语言的资料,进一步理解Python的基本特点和应用领域。

    2.以下是一个Python程序,请通过学习,了解Python程序的基本语法和基本组成。

    3.Python是编译型语言还是解释型语言?请找出两种以上同类语言。

    4.请在计算机上安装Python,并对它进行正确的配置。

    5.为什么要设置环境变量?设置环境变量要注意哪些问题?如何检验环境变量设置完成与否?

    6.请用Python语言编写一个小程序,向世界发出第一声问候:“Hello,world!”

    IDLE的安装

    IDLE是在安装Python时被自动安装的,只是在安装Python时,一定要确保选中了组件“tcl/tk”。准确地说,应该是不要取消选择该组件,因为在默认情况下该组件是处于被选中状态的。

    也就是说,IDLE不是被单独安装的,也不需要被单独安装。因此,对于IDLE而言,实际上是不存在安装这个问题的。此处之所以单独列出来加以阐述,是为了保证叙述逻辑上的连贯性。

    2.1.2 IDLE的启动

    安装Python后,可逐级通过菜单【开始】→【所有程序】→【Python】→【IDLE】找到IDLE并启动。IDLE被启动后的初始窗口如图2-1所示。

    图2-1 IDLE被启动后的初始窗口

    从图2-1中可以看出,启动IDLE后,首先映入眼帘的是它的Python Shell,可以通过它在IDLE环境下执行Python命令。除此之外,IDLE还带有一个编辑器,用于编辑Python程序。概括地说,IDLE有一个编辑器用于编写脚本程序;有一个交互式解释器用于解释、执行Python的语句;有一个调试器用于调试Python脚本程序。

    2.1.3 IDLE的个性化设置

    单击【Options】,在下拉菜单中出现【Configure IDLE】选项,如图2-2所示。

    图2-2 IDLE的Configure IDLE选项

    单击【Configure IDLE】后,进入如图2-3所示的界面。

    从图2-3中可以看出,【Configure IDLE】共涉及【Fonts/Tabs】【Highlights】【Keys】【General】【Extensions】5个选项卡,分别用于设置字体/缩进空格、字体高亮、快捷键、窗口总特性、插件(扩展)。

    1.Fonts/Tabs设置

    Fonts/Tabs设置界面如图2-4所示。

    从图2-4中可以看出,该选项卡的设置内容主要有3项:字体、字号和缩进的空格数。缩进是Python很重要的语法特征,从图2-4中可以看出,默认缩进4个空格,当然,也可以自行选择缩进2个空格或更多;Edit和Shell两种模式的默认字号均为16,字体是新宋体。

    图2-3 Configure IDLE的设置内容

    图2-4 Fonts/Tabs设置界面

    2.Highlights设置

    【Highlights】选项卡主要用于设置Shell和Edit模式下的高亮显示(配色方案),以及IDLE的界面模式(外观),如图2-5所示。从图2-5中可以看出,需要配色的内容较多,每项都可以单独设置前景色和背景色。IDLE的3种界面模式分别是IDLE Classic、IDLE Dark和IDLE New,如图2-6所示。这3种界面模式的风格差异较大,可根据个人的喜好自由选择其中一种。

    图2-5 Highlights设置界面

    图2-6 3种界面模式

    图2-7展示的是Shell和Edit模式下的高亮显示(配色方案),其中包括正常文本、关键词、定义等多个选项。如果需要,则可逐项设置相应的前景色和背景色。配色方案被保存后,可以永久使用。当然,如果懒得设置,那就使用默认的配色方案。

    图2-7 Choose Color for(配色方案)设置界面

    3.Keys设置

    【Keys】选项卡主要用于设置IDLE的各种快捷键,也就是说,可以对IDLE默认的快捷键进行定制(Customize)。默认使用的是Built-in Key Set(系统默认快捷键集)。在通常情况下,不需要调整快捷键,除非使用者对部分快捷键有特殊需要和偏爱,或者部分快捷键与其他软件存在冲突。图2-8所示是Keys设置界面。必须注意的是,如果对快捷键进行了设置,则必须通过单击【Save as New Custom Key Set】按钮保存配键方案。

    图2-8 Keys设置界面

    4.General设置

    【General】选项卡设置的内容主要跟窗口的特性有关,包括Window Preferences(窗口特性)和Editor Preferences(编辑器特性)两大部分,如图2-9所示。

    图2-9 General设置界面

    · Window Preferences:用于设置IDLE启动后默认的窗口类型是【Open Edit Window】还是【Open Shell Window】。也就是说,在启动IDLE时,是打开编辑窗口,还是打开Shell命令行窗口。同时也可以设置窗口的大小,窗口大小默认为80列×40行。在有些情况下,如果觉得默认窗口过大,则可以更改此项设置。

    · Editor Preferences:用于设置在运行(Run,按【F5】键)程序前是否需要提示保存文件,默认设置为【Prompt to Save】,即在运行程序前需要提示保存文件。也可以设置为【No Prompt】,即不提示保存而直接运行。

    从图2-9中可以看到,窗口大小已被设置为80列宽、20行高,该参数下的窗口效果如图2-10所示。

    图2-10 窗口大小被设置为80列×20行

    5.Extensions设置

    【Extensions】选项卡主要用于设置扩展IDLE功能的插件及其有关特性。IDLE默认只有一个名为ZzDummy的插件,该插件只是一个测试插件,仅被用于插件演示,无实质性意义。

    从图2-11中可以发现,除ZzDummy之外,还增加了一个ClearWindow插件,顾名思义,它是一个用于清屏的插件。需要指出的是,所有的插件都必须被另外安装,因为它们不是标准插件。关于清屏插件ClearWindow的详细内容,请参阅2.5节的讨论。

    图2-11 Extensions设置界面

    2.2 Edit编辑模式与Shell命令行模式的切换

    2.2.1 Edit编辑模式与Shell命令行模式的切换方式

    IDLE有两种工作模式,分别是:

    · Edit编辑模式——用于编写程序。

    · Shell命令行模式——用于逐条执行语句。

    IDLE的Edit和Shell模式可以相互切换,它们之间相互切换的方式如下。

    1.从Shell模式切换至Edit模式

    如果首先打开的是Shell模式(Shell窗口),那么另一种模式就是Edit模式。Shell模式也被称为“终端模式”。Shell模式的主界面如图2-12所示。

    如果当前模式是Shell模式,则可通过菜单命令【File】→【New File】进入Edit模式,如图2-13所示。此时的主界面如图2-14所示。

    进入Edit模式后,就可以编写Python程序了。该模式包含了文本编辑常用的基本功能,主要包括选择、复制、粘贴、高亮、自动缩进、括号“()”的左右匹配提示等。

    图2-12 Shell模式的主界面

    图2-13 通过菜单命令【File】→【New File】进入Edit模式

    图2-14 Edit模式的主界面

    2.从Edit模式切换至Shell模式

    在Edit模式下的【Window】菜单中,有一个命令为【Python 3.6.4 Shell】(注:不同的版本,该命令的信息会相应地有所不同),如图2-15所示。

    图2-15 Edit模式下的【Window】菜单

    单击【Python 3.6.4 Shell】,即可从Edit模式切换至Shell模式。同理,在Shell模式下的【Window】菜单中,同样会出现正在编辑的程序选项。如果该程序没有被保存过,那么文件名即图中的【Untitled】;如果该程序已被保存过,则文件名为已使用的文件名。单击该文件名也可以从Shell模式切换至Edit模式。

    2.2.2 IDLE的文本编辑功能

    IDLE具有比较完备的文本编辑功能,例如,代码自动缩进、语法高亮显示、单词自动补齐及命令历史等。借助这些功能,开发者能够比较高效地编写程序。

    因为IDLE具有Edit和Shell两种工作模式,所以以下所述的特性在这两种模式下均适用,它们可用于文字或代码的编辑。

    在Shell模式下【Edit】菜单的具体内容如图2-16所示。

    而在Edit模式下【Edit】菜单的具体内容如图2-17所示。

    图2-16 Shell模式下的【Edit】菜单

    图2-17 Edit模式下的【Edit】菜单

    从上述两图的对比中可以看出,在两种模式下【Edit】菜单的功能完全相同。以下对各项功能简单地加以分析。

    · Undo:撤销上一次的修改。

    · Redo:重复上一次的修改。

    · Cut:将所选文本剪切至剪贴板。

    · Copy:将所选文本复制到剪贴板。

    · Paste:将剪贴板上的文本粘贴到光标所在位置。

    · Find:在窗口中查找单词。

    · Find in Files:在指定的文件中查找单词。

    · Replace:替换单词。

    · Go to Line:将光标定位到指定行首。

    · Show Completions:关键词自动补齐。

    · Expand Word:单词自动补齐(只针对自定义的单词)。

    在上列项目中,后两项的功能非常实用。遗憾的是,在默认的快捷键集中,【Show Completions】命令的快捷键【Ctrl+Space】往往与Windows操作系统的输入法切换的快捷键发生冲突,因此,强烈建议自行设定该快捷键。幸运的是,无论是在Edit模式下,还是在Shell模式下,关键词自动补齐功能还有更好的快捷方式,那就是【Tab】键。

    1.关键词自动补齐

    关键词自动补齐功能示例如图2-18所示。

    在图2-18所示的状态下,按下【Tab】键,则出现图2-19所示的情况。

    图2-18 关键词自动补齐功能示例

    图2-19 关键词自动补齐选择

    选中要补齐的单词后,再按两次【Tab】键,“pr”就被自动补齐为“print”了。这个功能是不是太实用了?是的,这个功能对于程序开发者而言,简直是一个妙不可言的“神器”!当然,除按两次【Tab】键外,还可以通过上下移动光标选择需要的单词,直接按回车键得到完整的单词。

    这里要特别提醒的是,此法只适用于Python的关键字,不适用于自定义单词的补齐。

    2.代码自动缩进

    实际上,很少有语言能像Python如此重视缩进了。在其他语言中,如C语言,缩进对于代码的设计而言,是“有了更好”,而不是“没有不行”,它充其量是个人书写代码的风格问题。但是,对于Python语言而言,缩进是语法的强制性要求和刚性规定。在Python程序里,语句块(复合语句)不是用大括号“{}”之类的符号表示的,而是通过缩进加以表示的。这样做的好处就是减少了程序员的自由度,有利于统一风格,使得人们在阅读代码时感觉更加轻松。为此,IDLE提供了代码自动缩进功能,它能将光标自动定位到下一行的指定空白处。当输入与控制结构对应的关键字,例如,输入关键字if及其条件表达式,或者输入关键字def和函数名,并按下回车键后,IDLE就会启动代码自动缩进功能。

    图2-20演示了代码自动缩进功能。

    图2-20 代码自动缩进功能演示

    当在自定义函数func()所在行的冒号后面按回车键之后,IDLE自动做了缩进处理。也就是说,语句print()前的空格是被自动插入的。

    在一般情况下,IDLE每将代码缩进一级,相当于自动输入4个空格。如果想改变这个默认的缩进量,则可以修改【Options】→【Configure IDLE】→【Fonts/Tabs】→【Indentation Width】选项以实现缩进量的调整。对于初学者来说,需要注意的是,尽管自动缩进功能非常方便,但是不能完全依赖它,因为有时候自动缩进未必能完全符合设计的真实意图和要求,所以要仔细检查自动缩进所对应的层次关系,以确保层次正确。

    3.语法高亮显示

    所谓“语法高亮显示”,就是将代码中的不同元素通过不同的颜色加以突出显示。在默认情况下,关键字显示为橘红色,注释显示为红色,字符串显示为绿色,定义和解释器的输出显示为蓝色,控制台输出显示为棕色。在输入代码时,会自动应用这些颜色突出显示,这就是语法高亮显示。

    语法高亮显示的好处是:可以更方便地区分不同的语法元素,从而提高程序的可读性;与此同时,降低了程序出错的可能性。比如,如果输入的变量名显示为橘红色,那么你需要注意了,这说明该名称与预留的关键字重名了,因为关键字是以橘红色显示的,所以,它给出了一种提示:请给变量更换名称,否则可能会导致冲突。

    4.单词自动补齐

    所谓“单词自动补齐”,指的是当用户输入单词的一部分后,从【Edit】菜单中选择【Expand Word】命令,或直接按【Alt+/】组合键,可自动补充该单词的余下部分。这个功能只适用于自定义的单词,即自定义的函数名、变量名、类名或属性名等。

    2.3 在IDLE中运行程序

    在IDLE环境下,运行一个Python程序通常有两种方式。

    2.3.1 在Edit模式下运行程序

    在IDLE的Edit模式下,要运行程序,可从【Run】菜单中选择【Run Module】命令,其功能是执行当前文件,即当前编辑区中正在被编辑的程序。

    举例1:Edit模式下的程序运行。

    首先,在Edit模式下,在编辑区中写入如下程序:

    通过【File】→【Save】或【Save as】命令保存上述被编辑的程序文件。对于首次保存,两者的效果是一样的,都必须为文件命名,例如,myrundemo1.py。请注意,文件类型默认为.py。

    在Edit模式下,文件被保存后的界面如图2-21所示。

    图2-21 在Edit模式下文件被保存后的界面

    然后,选择【Run】→【Run Module】命令(如图2-22所示)或直接按功能键【F5】,运行当前正在被编辑的模块(程序)myrundemo1.py。程序被运行后,其结果会在Shell窗口中输出,如图2-23所示。

    图2-22 运行程序菜单选项

    图2-23 程序运行结果在Shell窗口中输出

    2.3.2 在Shell模式下运行程序

    在Shell模式下,只能通过命令行方式逐条输入语句,逐条执行语句。

    举例2:在Shell模式下运行与举例1相同的程序。

    该例的程序代码与举例1的程序代码完全相同,只不过它只能一条语句接一条语句地以命令行方式被输入和运行,如图2-24所示。

    图2-24 在Shell模式下输入与运行程序

    在本例中,自动缩进功能也得到了很好的演示,因为语句print(ll)是被自动缩进的。

    上述代码的运行结果与在Edit模式下的运行结果完全一致。

    2.4 IDLE的程序调试功能

    2.4.1 两种调试方法

    在软件开发过程中,总免不了出现这样或那样的错误。在这些错误中,有些是属于语法方面的,有些是属于逻辑方面的。对于语法错误,Python解释器能轻而易举地将它们检测出来。因此,如果程序中存在语法错误,那么Python会停止运行程序并给出错误提示。而对于逻辑错误,Python解释器是无能为力的。如果程序中存在逻辑错误,那么虽然程序可以被运行,但是会出现死机或抛出异常的问题。显然,在这样的情况下,程序的运行结果一定是错误的。面对逻辑错误,最简单而可靠的解决方法就是对程序进行调试,也就是常说的“Debug”。

    单词debug可以被分为两部分——de和bug,将两者合在一起,就是找出臭虫的意思;在计算机领域,被引申为发现错误的“调试”。

    调试程序的方法有很多,有些需要借助工具,而有些需要借助程序开发者的经验。当然,经验是在长期的调试过程中积累起来的。

    1.经验调试法

    最简单的调试方法是直接显示程序运行中的有关数据,这是一种基于经验的调试方法。例如,可在某些关键位置用print()语句显示有关变量的值,然后通过输出值与期望值的对比,确定当前程序段有没有出错。该方法最大的问题是,开发者必须在所有可疑的地方插入print()语句,但是由于它们本身不是程序的真正代码,所以,等到程序被调试完后,还必须将这些打印显示语句全部清除。尽管如此,笔者还是非常喜欢这种方法,虽然比较烦琐,但是很管用,而且是人人学得会的调试方法。

    2.工具调试法

    除经验调试法外,还可以使用调试器进行调试。借助调试器,可分析被调试程序的数据,同时监视程序的运行流程。调试器通常具有暂停程序运行、检查和修改变量、调用方法而不更改程序代码等功能。

    与大多数集成开发环境相似,IDLE也提供了一个调试器,它所具有的程序调试功能也可帮助开发者比较方便、快速地查找逻辑错误。

    2.4.2 在Shell模式下的程序调试

    在【Python Shell】窗口中选择【Debug】→【Debugger】命令,如图2-25所示,即可启动IDLE的交互式调试器。此时,IDLE会打开【Debug Control】窗口,并在【Python Shell】窗口中输出“[DEBUG ON]”,后跟一个“>>>”提示符,如图2-26所示。可像正常情况那样使用【Python Shell】窗口,只不过在调试状态下输入的任何命令都处于调试模式。借助调试器,可在【Debug Control】窗口的【Locals】下查看局部变量的值及与程序运行有关的其他内容。当然,为了查看全局变量,必须勾选【Globals】复选框。

    图2-25 选择【Debug】→【Debugger】命令

    图2-26 Debug的开关示意

    如果要退出调试器,则可再次选择【Debug】→【Debugger】命令,IDLE会关闭【Debug Control】窗口,并在【Python Shell】窗口中输出“[DEBUG OFF]”。

    需要注意的是,在Shell模式下,只能对语句进行编辑和调试。也就是说,只能先写一条语句,然后通过Debugger单步调试该语句。换句话说,Debug开关要被反复切换,类似于图2-27所示的效果。

    图2-27 打开和关闭Debugger的界面

    下面通过一个例子较为详细地讨论调试的过程。

    首先,选择【Debug】→【Debugger】命令,打开Debug调试器,如图2-25所示。

    在出现“[DEBUG ON]”后,在“>>>”提示符后输入待调试的语句。例如,输入如下for语句:

    输入完成后,按回车键,即可进入调试状态,如图2-28所示。

    图2-28 处于单步调试状态[DEBUG ON]的程序调试演示

    此时,代码尚未被执行,必须通过【Debug Control】窗口中的Step、Over等单步调试命令一步一步地执行,从而得到每一步的执行结果。

    这里需要说明的是:

    · Step相当于Step in,即进入被调用函数或方法内部。

    · Over相当于Step Over,即直接运行被调用函数或方法。

    · Out相当于一次性执行该代码。

    · Go相当于Out。

    图2-29所示是单击【Over】按钮两次后,该代码输出的结果。

    图2-29 单击【Over】按钮两次后,该代码输出的结果

    通过【Debug Control】窗口中的Step、Over等单步功能,可以单步方式调试程序代码。通过查看每一步的执行结果和变量的变化,来判断、确定程序代码的正确性。单步调试是所有调试器中最为强大、最为常用的功能。

    2.4.3 在Edit模式下的程序调试

    进入Edit模式后,在编辑区中写入与上面一样的代码并保存,如图2-30所示。

    图2-30 在Edit模式下程序的编辑输入

    在Edit模式下,通过选择【Run】→【Python Shell】命令,如图2-31所示,打开Shell窗口,进入Shell模式。

    图2-31 在Edit模式下选择【Run】→【Python Shell】命令

    选择【Debug】→【Debugger】命令,即可进入Debug状态,如图2-32所示。

    图2-32 进入Shell模式的Debug状态

    然后切换回Edit模式,选择【Run】→【Run Module】命令,执行运行程序的命令,从而使IDLE正式进入Debug状态。接下来,通过【Debug Control】窗口中的各种单步调试功能来实现单步调试,它们的具体用法与在Shell模式下的用法相同。

    不过,需要特别指出的是,在Edit模式下,使用Over与Step单步调试功能,一定要注意它们的区别,而这只能靠多实践才能领会。

    2.4.4 断点调试

    单步调试让人感觉效率低下,有时候甚至觉得无法忍受。相对而言,断点调试的效率要高很多。

    所谓断点调试,就是先在程序中怀疑有问题的地方设置一个标志——断点标志,然后让程序全速运行,运行到此处,程序被暂停运行,此时,开发者可以通过程序呈现的结果(例如,某些变量的值)与预期的结果的比对,从而判断刚被运行的程序段是否存在问题,也就是找到程序错在哪里、是什么问题。

    断点调试的主要步骤如下。

    1.设置断点

    在Python的源程序编辑器中,在需要进行断点调试的代码行上单击鼠标右键,在弹出的快捷菜单中选择【Set Breakpoint】命令,之后该行的底色就变为黄色,用以指示在此行设置了一个断点。如果要设置多个断点,就按此法对其他语句进行设置。

    2.打开Debugger

    通过菜单【Run】切换到Python的Shell模式,在Shell模式下选择【Debug】→【Debugger】命令,使IDLE进入Debug状态。

    3.切换到编辑模式

    在Edit模式下,按【F5】键或选择【Run】→【Run Module】命令,运行当前编辑区中正在被编辑的程序。如果出现在运行前先保存文件的提示,则请先保存文件。

    4.运行到断点处

    在【Debug Control】窗口中单击【Go】按钮,即可全速运行程序,遇到断点则自动暂停。注意,断点所在的那条语句此刻尚未被执行。此时,调试者要做的是比对工作,即比对此刻的结果与预期的结果,以判断刚被执行的代码是否存在问题。之后,可以继续运用【Go】【Over】或【Step】执行该断点语句及其后的语句。如果后面还有断点,那么,当遇到断点时,程序的运行又被暂停。

    2.5 在Shell模式下如何清屏

    在学习和使用Python的过程中,少不了要与Python的IDLE打交道。但在使用IDLE的时候,学习者和开发者都会遇到一个常见而又懊恼的问题:无法清屏。

    如何让IDLE具有清屏功能?

    可以为IDLE增加一个专门用于清屏的扩展插件ClearWindow,该插件其实就是一个Python程序。下面简要地讨论如何安装与使用该插件。

    1.下载ClearWindow插件

    在网上下载插件程序clearwindow.py。它的具体下载地址请读者自行搜索。

    2.安装插件

    将clearwindow.py文件复制到Python安装目录的Python XXX\Lib\idlelib文件夹下,例如,D:\python364\Lib\idlelib。注意,一定要正确地选择目录。也就是说,一定要根据具体的安装位置来确定具体的目录。

    3.设置IDLE

    用记事本软件打开Python XXX\Lib\idlelib目录下的config-extensions.def文件,它是IDLE扩展(插件)的配置文件。当然,从安全的角度来看,为了防止操作出错,可在打开它之前先备份一份。

    打开后,修改config-extensions.def文件的内容,主要是在文件末尾添加如下内容,然后保存并退出。

    4.查看效果

    此后,再次打开Python的IDLE,即可看到在【Options】菜单中增加了【Clear Shell Window】命令,如图2-33所示。

    图2-33 在【Options】菜单中增加了【Clear Shell Window】命令

    由于增加了一个清屏插件,因此,在【Options】→【Configure IDLE】→【Extensions】下增加了一个ClearWindow插件,如图2-34所示,右侧的选项可以对该插件进行使能/失能的设置:enable=1表示使能,enable=0表示失能(该插件无效)。

    图2-34 ClearWindow插件的使能设置

    在IDLE命令行方式下输入代码,然后按【Ctrl+l】组合键,会发现刚输入的代码被全部清除了,也就是实现了清屏功能。

    这里要特别提醒一下,以上设置的快捷键为【Ctrl+l】,也可修改成其他快捷键,方法是:将config-extensions.def文件的设置选项“clear-window=”中的Control和l修改成其他键即可。

    思考与实践

    1.在IDLE的Shell模式下,输入以下程序,并进行单步调试,以确定程序的错误所在。

    2.在IDLE的Edit模式下,通过设置断点的方式调试上述程序,以确定程序的错误所在。

    3.按照本章所述,为IDLE安装一个清屏插件。

    4.请在Shell模式和Edit模式下,分别编写并运行以下程序。

    5.编写一个自主创意的Python程序。

     

    更多python相关VIP专享文章免费阅读、千本电子书免费阅读、N次源码资源下载、近千门课程免费学习等特权,

    ↑↑ 开通CSDN  VIP免费享有  ↑↑
     

    戳我,立即开通>>   立享7项VIP专项特权!

    戳我,立即开通>>

    展开全文
  • 针对以上问题,从优化教学内容,重视课堂教学活动和教授大一新生好的学习方法等方面入手,探讨大学物理课程的教与学,旨在提高教学效果,完成课程教学目的。[关键词]大学物理;课堂教学;学习方法大学物理课程是...
  • 商品参数 商品基本信息,请以下列介绍为准 图书名称: 父子的编程之旅 小卡特一起Python 第3版(全彩印刷)作者: [美] 沃伦·桑德(Warren Sande) 卡特·桑德(Carter San)定价: 119.00ISBN号: 9787115547248...
  • 教与学中用好教材《大学计算机信息技术教程》.pdf第 9卷 第 5期 无 锡 职 业 技 术 报 Vo1.9No.52010年l0月 JoURNAL 0FW UXIINSTITUTE 0F TECHN0LOGY 0ct.2010教与学中用好教材 《大学计算机信息技术...
  • 原标题:【资笔试科目】数学学科复习指导一、试卷结构汇总分析 分析完试卷结构,看看高频考点一般都怎么考?每一高频考点下面,小编都放了一道真题及答案精析用们在复习期间,要多做做分析真题,真题是非常...
  • BurpSuite 学习使用教程

    千次阅读 2021-02-16 23:27:32
    一、简介: ...这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一强大的可扩展的框架。它主要用来做安全.
  • Holle大家好,先自我介绍一下,我现在大二,专业是数字媒体技术,方向是游戏制作,的是Unity,和我同专业的另一方向是APP开发,的是Android studio,但是他们也Unity,当然了,不同学校的课程安排和的东西...
  • 【STM32】标准库HAL库对照学习教程十--软件IIC控制AT24C02一、前言二、准备工作、AT24C02(EEPROM)介绍1、简介2、引脚功能3、设备地址四、硬件图五、标准库控制AT24C021、实验程序2、实验效果六、HAL库控制AT...
  • 学习Python的,都知道Python 是一高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python是一种动态解释型的编程语言。基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。Python...
  • 年级信息技术教材分析及情分析年级信息技术教学计划主要教学内容本学期的教学内容是出版社出版的小学信息技术教材第1至课的内容,分成单元。其中第一单元是,通过这一单元的教学,让学生学习信息的概念及...
  • 机器人的示教与再现

    千次阅读 2020-12-23 23:56:33
    是一种机器人的编程方法,示分为示、存储、再现三个步骤,其原理如图2-20所示。1、示”就是机器人学习的过程,在这个过程中,操作者要手把手 教会机器人做某些动作。 存储”就是机器人的控制系统以程序的...
  • 小学语文“三小组”模式口语交际课型教学流程及基本要求一、教学流程小学语文口语交际课“三小组”模式,即每一个口语交际的学习有三个阶段:预、互、评。预有“了解话题、体验情境”两个学习环节;互...
  • 这是想入行3D建模最多的问题,在游戏行业技术逐步更新换代的过程中,次世代这词被越来越多的提起来了,要回答如何学习次世代,先要跟大家解释什么是次世代。 “次世代游戏”指代和同类游戏相比下更加先进的游戏,...
  • Redisl集群3以上是通过增加sentinel节点的个数提高对于故障判断的准确性,因为领导者选举需要至少一半加1节点,奇数节点可以在满足该条件的基础上节省一节点。简单的说:如果有3节点的sentinel 当一 ...
  • 后来靠这个方法,我能做到最长连续学习10个小时,持续了三个月,也不会觉得很累。 如果你跟之前的我一样,5分钟玩2小时,注意力涣散,亦或得很努力却成效甚微。建议你花10分钟,认真看完我这篇回答并实践,一定...
  • 小白ssm框架:初识ssm框架

    千次阅读 多人点赞 2021-04-07 07:48:32
    **备注**:在使用Java EE语言进行后端项目开发的过程中,使用最普遍的框架便是SSM框架,要想利用SSM框架来进行后端项目的开发,首先便是对SSM框架有一基本的了解掌握,了解SSM框架中各层次的关系,以及SSM框架各...
  • 工业机器人示教与初识编程语言

    千次阅读 2020-12-23 23:55:59
    概述:任务二工业机器人示教与初识编程语言任务要求:通过工业机器人示和编程操作演示和尝试性练习,掌握机器人示基本方法网了解机器人编程方法。1、川崎机器人示(1)认识机器人示器并熟悉其功能,图1-41...
  • 【www.hyjtnet.com--推荐】...下面就来向大家介绍一下学习鼓点舞需要知道的三个要点。需知一:常见的鼓点节奏类型我们需要知道一些中东鼓的节奏类型,当我们听到它们的时候,就像邂逅了好友一般,音乐的联系更加...
  • 魔方中国人发明的“华容道”,法国人发明的“独立钻石”一块被称为智力游戏界的大不可思议。完成魔方的方法有许多种,很多魔方高手仅用几秒钟即可完成魔方的秘诀,是因为他们已经完全熟知在颜色分布上百种情况下...
  • 【STM32】标准库HAL库对照学习教程八--串口通信详解一、前言二、准备工作、通信的基本概念1、通信方式2、串行通信并行通信(1)串行通信(2)并行通信3、异步通信同步通信(1)异步通信(2)同步通信4、单工...
  • -IIC通信原理讲解一、前言二、IIC总线介绍、IIC物理层四、IIC协议层1、通信大致流程:2、传输过程3、信号要求五、使用C语言实现IIC1、起始信号停止信号2、应答信号、非应答信号等待应答信号3、发送一字节...
  • 影像组的基本概念临床应用

    千次阅读 2020-12-30 12:58:25
    近年来大数据技术医学影像辅助诊断的有机融合产生了新的影像组方法,其通过从影像中提取海量特征来量化肿瘤等重大疾病,可以有效解决肿瘤异质性难以定量评估的问题,具有重要的临床价值。影像组技术来源于...
  • Docker基础实战教程:Dockerfile

    千次阅读 2020-12-31 18:02:18
    镜像是分层存储的,其制作过程实际上是对每一层需要添加的配置、文件等进行定制。Dockerfile本质上就是一制作镜像的脚本,将每一层的修改、安装、构建、操作等命令都在这脚本中进行清晰透明的定义。 本实训将...
  • 【STM32】标准库HAL库对照学习教程外设篇--超声波测距传感器一、前言二、准备工作、超声波测距传感器1、原理说明2、使用说明四、标准库使用传感器1、实验程序2、实验效果五、HAL库使用传感器1、cubemx主要配置2...
  • 资料简介人版小学信息技术(起)年级上册教案 材 目 录第1单元 初步知识基本操作第1课 信息和信息技术第2课 认识计算机第3课 窗口操作第4课 用计算机辅助学习第5课 用计算机娱乐第6课 认识键盘第7课 玩...
  • 为什么要强调这呢,因为在整个过程中,涉及到一叫做“环境变量”的东西,如果Python安装的时候没有勾选那个勾,那么Python就不会被添加到系统环境变量里去,导致插件安装不成功。安装的时候一定记得选这“Add ...
  • 1991年,第一Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。 荣登2018年TIOBE年度最佳编程语言,很多大公司,包括google、Yahoo都大量的使用Python。 1.1.1. 提升自己的逼格,你需要了解 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 283,474
精华内容 113,389
关键字:

学与教的三个过程