程序?这只是一堆代码。但是代码是有组织的,不是凭空堆砌的。有一句“老话”:程序=数据结构+算法,意思是一个程序是由一些数据结构(数据的组织结构)加上一定的算法构成的。从这个角度来说,算法是主要驱动力,数据结构是为算法服务的(当然,你可能因为有一个非常有用的数据结构而设计了一个算法,但算法仍然是主角)。那个算法是什么?算法是为实现某些目标而设计的步骤。所以,从这个角度来看,程序只是某些步骤的表现,这些步骤也叫过程,而程序就是过程的表现。我同意这个“老”的说法(或者我的解释),程序只是一个封装了过程的外壳,因此,程序和算法是两个不同的东西,虽然它们是相关的。程序只是算法的一种表现形式,但不是唯一的表现形式。算法也可以用笔写在纸上,用算盘表达,通过一些答案、比喻或类比来表达,通过实际操作来表达。算法可以是通用的设计步骤,也可以是某一领域的具体设计步骤。算法有专门的设计和分析,不需要程序来支持。算法是灵魂,程序是外壳。存在这些情况:“算法很强,但程序很烂”(壳没写好),“程序很强,但算法很烂”(灵魂设计??不好,但很好在包装)。如果程序只是一个外壳,那不重要吗?当然不是,写shell也是技术活,设计,经验,学习。而且,程序员可以通过程序来设计算法,比如可以很熟悉的通过if/while结构来设计算法。当然,这不是必须的,也未必是设计算法的好方法。尤其是程序开发,比如前后端、客户端开发,如果不熟悉写程序(写shell)的技巧和知识,是站不住脚的,但不一定会被要求具有较强的算法设计能力。嗯,说了一堆废话。其实我想说说python的语言特点。只有掌握了这些特点,才能把shell写得更快更好。就跟练篮球一样,先把分解动作做好,然后连贯起来——那你不练分解直接连贯行不行?没关系,练习分解不是必须的,尤其是工具的使用,边用边搜索也是个好方法,不过本文的介绍还是从分解开始的。Python的语言特性可分为:变量、数据类型(数据结构)、语句、代码组织等。(1)变量变量是其值可以改变的量,所以变量用来存储值。在python中定义一个变量就是给变量赋值,所以如果想忘记初始化,就必须给变量赋值,而赋值的时候,变量的类型就确定了,是的,变量有类型。Python内置了很多有用的类型(也叫数据结构),后面会详细介绍。需要什么变量?这与工艺有关。比如流程是把两个输入的数相加,那么可以考虑用两个变量来保存输入的值,比如这样:)来设计任何变量。(2)过程过程是主角。如果一个程序的逻辑不好,一般意味着这个程序在流程处理上不好,而常说的“程序算法”指的就是流程的设计。程序是对进程的封装。前提是流程一定要想好,设计好。当然,流程(或算法)不一定需要你设计。也可以让别人设计给你翻译。程序是进程的翻译。于是,有一段时间,部门负责人教我写代码,让我先把流程的每一步都写出来,加上注释,再写代码翻译。当然,因为注释可能是一种不必要的负担,所以我慢慢就不写步骤注释了,但意思就是养成一个习惯:先设计流程,再写代码。不管流程的具体内容如何,??从结构上看,流程可以分为顺序流程、分支流程和循环流程三种。顺序流程就是从上到下逐句执行的流程,这样的流程是必然存在的。分支过程(if/else)是根据不同的条件选择要执行的操作。循环过程就是重复执行某些操作。这三个过程基本上是混合在一起的,以组合拳的形式出现,比如下面这个“猜数字”:#-*-coding:utf-8-*-importrandomsecret=random.randint(0,100)temp=input("请告诉我我想要的数字:");guess=int(temp)whileguess!=secret:ifguess>secret:print("没那么大,说小一点!")else:print("Too小,说大!")temp=input("猜错了,再来一次:")guess=int(temp)print("太好了,猜对了!")上面的“猜数字”游戏,使用循环(while)和分支(if..else)的过程。具体来说,对于分支过程,一般有两种表达形式:if...elseif...elif...else对于循环过程,一般有两种表达形式:whilexx:forxxin[]:writetwomore一个程序,一个打印“钻石”,一个打印九九乘法表:i=1whilei<=17:cnt=iifi>9:cnt=18-istarcnt=(cnt-1)//2spacecnt=4-starcntprint(""*spacecnt,end="")print("*"*starcnt,end="")print("*",end="")print("*"*starcnt,end="")print(""*spacecnt)i+=2j=1whilej<=9:i=1whilei<=j:print("%d*%d=%d"%(i,j,i*j),end="\t")i+=1print("")j+=1找到规律并设计它是获取过程的重要途径。打印效果如下:好了,上面介绍了变量和过程,特别是过程的翻译,也就是句子的使用。语言是一种工具,你要学会使用它,边使用边试错,才能更好更快地掌握它,不要拘泥于细节,除非细节影响你解决问题。偶然再见,再见。
