,大家还记得我们上次提到过的if-else(分支)和while(循环)语句吗?之前我们仅仅是简单介绍了一下他们的使用方法,为了促进大家理解,今天我们一起认认真真的对其进行系统的学习。
在计算机编程的领域,有这样一条著名的论断,即任何程序都可由顺序、选择、循环三种基本控制结构构造,虽然这一论断是在结构化程序设计中被提出来的,但是对于面向对象设计的Python语言仍然适用,仍然具有非常大的参考价值(毕竟Python都是拿C语言写的)。
,回到本次课程的学习。第一个问题,求1到100的和,这个问题相信好多人都在小时候学过吧,数学家高斯在他十岁时,小学老师出了一道算术难题:“计算1+2+3…+100=?”。 这可难为初学算术的学生,但是高斯却在几秒后将答案解了出来,他利用算术级数(等差级数)的对称性,然后就像求得一般算术级数和的过程一样,把数目一对对的凑在一起:1+100,2+ 99,3+98,……49+52,50+51 而这样的组合有50组,所以答案很快的就可以求出是: 101×50=5050。现在我们想要计算机做这件事,怎么办呢?计算机可不懂等差级数是啥,没关系,计算机最擅长干重复的事情,请看代码。
上面有两个陌生的地方,一个是for in,另一个是range。for循环可以用来遍历任何序列,也就是说,for循环可以把这个序列中的第一个元素到最后一个元素依次访问一次,我们之前学过的Python“六君子”之String、List、Tuple、Set、Dictionary均是序列。for循环的基本结构如下:
其中,for in是关键字(我们之前也提到过,关键字都是Python的元老,起变量名千万不能和关键字一样),Sequence是被遍历的序列,item指该序列的元素。聪明的小伙伴可能已经有想法了,照这意思,range()函数就是生成了一个序列?对滴,恭喜你,答对了,让我们看一下range的官方文档。
什么意思呢?range()函数返回了一个对象,该对象生成了一个从start到stop,以step递进的int型序列,start默认为0,stop不包括在序列中,step默认为1,这下明白了吧,range(1,101)就是生成了从1到100的整数序列。for循环一共循环遍历了100次,把1到100中每一个元素都相加起来。
除了利用for in循环求1到100的和,我们还可以这样干,大家请看:
在Python 中 while 语句用于在某条件满足的情况下循环执行程序,对应到上述语句就是只要num>0就执行后面的total = num和num -= 1。total = num的作用大家肯定知道了,就是把1到100加到一起,而num -= 1除了生成1到100的每一个元素,还为终止while循环提供了条件,即num每次循环减1,当减到0时,while循环即终止。下面给出while循环的基本形式:
大家可能会问了,怎么就知道哪些语句是while循环要执行的语句呢?学过其他语言的知道,大多数的编程语言均以大括号 {}来控制类,函数以及其他逻辑判断,而这也是Python与其他语言最大的区别,Python用缩进来替代大括号{}声明程序体,笔者一般喜欢缩进一个Tab,大家可以按照自己喜好来决定缩进的空白数,不过所有代码块语句必须包含相同的缩进空白数量,这个是毋庸置疑的。
,下面我们再结合一个例子,讲一下if else语句,求1到100以内的质数,什么是质数呢?质数就是只能被1和本身整除的数,比如2。了解了概念,开始编代码。
,我们讲解一下上述代码,def关键字用于创建一个函数,这个不是本次课程的重点,大家记住isPrime的功能就是判断一个数是不是质数就可以了。我们着重看里面的代码。首先定义了一个变量isPri,并赋值为True,然后遍历从1到num(不包括1和num,不明白的好好理解一下质数的定义)的每一个数,只要有一个能整数num,即可以判断该数不是质数,把isPri设置为False,同时通过break语句跳出当前循环,将isPri返回。从代码中,我们可以知道,如果从1到num(不包括1和num),没有一个数能整除num,则isPrim始终为True,这也正是质数的要求,,我们看一下执行效果。
学了Python“控制结构”之顺序分支循环,相信大家一定摩拳擦掌,跃跃欲试想去各种编了,苏苏也就不打扰大家了,,今天的编程大餐我们就吃到这儿,不饱的不要着急,接下来还会有更多的编程大餐会陆陆续续推出,敬请享用。
领取专属 10元无门槛券
私享最新 技术干货