目录
本章节将为大家介绍 Python 循环语句的使用。
Python 中的循环语句有 for 和 while。
所以我将会分成两个部分介绍,一个是for循环语句一个是while循环语句。
4.1for循环
for循环的含义,就是循环整个列表,范围,字符串。
4.1.1基本的for循环
基本for循环的结构是:
for i in <列表名称,范围,字符串>(a):(注意冒号非常重要,自己在写的时候不要忘记!!)
命令(b)
else:
命令(c)
首先来介绍以下for循环的结构,像前文所说for循环的作用是循环整个列表,范围,字符串。循环经历列表,范围,字符串的时候执行命令b。接着循环完成之后执行命令c。(注意这个i的话是可以更换的,因为他是一个循环的载体)
也许这样说比较抽象,我们可以举一个例子来讲述。
fruit=["apple","banana","orange","pear","blueberry","waxberry"]
for i in fruit:
print(i)
在这个代码中,首先定义了fruit这个列表是啥东西,(列表也是python中的数据类型,当然在之后会写道这个东西)接着使用for循环,来遍历了这个列表。来看一下打印出来是啥:
看到的结果是整个列表打印出来了,在这个代码中我使用了载体i,运用for循环遍历一个东西的特性,将in后面的范围,列表,字符串的内容一个接着一个打印出来。这个就是for循环的基本解释,你可以理解成,将一个一个内容搬下来然后在到命令b,执行命令b。
在上面这个代码中,是一个列表,所以我将fruit这个列表中的内容搬了下来,然后执行命令b,将其打印出来。
那之前是关于列表的循环,那之后先来讲一下关于字符串的for循环
for i in "fruit":
print(i)
大家应该非常的清楚,在python中有引号的数据类型在数字2,也就是python第二章:语法基础1的时候就应该讲述过这个东西。这个类型的话就是我们熟悉的字符串。
结果可以先猜一下
也就是说在这个for循环中将fruit这个单词的字母给搬下来,并且使用了print命令给打印出来了。
在讲述for循环与范围之前,首先需要了解一个函数,range函数,range在英文中是指范围的含义
来看一下基本的代码,就知道range的使用方式了。
for i in range(1,10):
print(i)
这个代码的意思就是在1到10的范围中进行for循环,也就是说我范围中的数字就是我要搬下来的途径。其实最重要的在这里还是这个范围的问题,1到10前面后面到底包不包括。这个与当时的切牌是一样的,运用同样的口诀就行了,前包后不包,啥意思呢?就是我前面的数字是包括的,但是我范围后面的数字便不包括了。
所以打印出来的便是
这个就是打印出来的结果。他遵守的是前包后不包的遵旨,但是像切片一样还是有一些其他情况存在。
for i in range(10):
print(i)
在这里没有前面的数字了,也就是说范围少了前面的数字,那从何开始呢,这里是从0开始,然后结束的话同样遵循前包后不包的宗旨,也就是说最后打印出来的是0--9这几个数字(包括0,同样也包括9)
最后就是步长,与切片完全相同,不懂的可以看看那篇文章。在这里的代码是怎样子写的。
for i in range(1,10,2):
print(i)
这个结果就是这样子:
在一开是中的结构中有else部分,但是还没有例子
for i in range(1,10,2):
print(i)
else:
print("finished")
这个代码的原理是首先使用for循环,将1--9(闭区间)步长是2这几个数字打印出来,完成之后将会打印出来finished。
这个else与if条件语句中的else是一个意思,就是上面的循环完,或者说不符合我上面的条件,那我就进行else的进程。
4.1.2for循环的嵌套
for循环的嵌套的基本结构:
for i in <range, string>
for i in <range,string>
命令
else:
命令
for循环嵌套的基本结构是这样子的
然后我们同样在例子中感受以下for循环的嵌套,让我们使用for循环来写以下关于1,2,3这三个数字能够搞出多少个三位数,(数字不能重复,就是不能出现111,112这样的数字)并且分别是啥这个例子。
首先1,2,3三位数,如果不用代码来做的话,我们会先假定一个百位的数字,比如说先假定1为百位上的数字,然后有123,132。然后改2为百位,213,231。接着就是定3为百位上的数字,321,312这样子,那在代码中也是一样,使用for循环将其一个一个数字搬下来
for i in range(1,4):
for x in range(1,4):
for y in range(1,4):
在这个就是说我i取1 的时候x可以取1,y取1。接着i取1的时候,x可以取2,y取2,这个样子,也就是说,到命令行这里的时候我的变量有的数字就是i--1,2,3;x--1,2,3;y--1,2,3。
然后才可以开始进行对于他们的百位还是十位还是个位进行确定。
for i in range(1,4):
for x in range(1,4):
for y in range(1,4):
a=i*100+x*10+y
print(a)
这个就是关于基本的代码,a确定了i是百位,x是十位,y是个位这个样子,并且i的123可以分别的最为百位出现,但是会出现一个问题,题目规定的是不能出现111这样的情况,也就是不饿能重复,按照我们现在的逻辑的话,会出现这样子的情况,现在打印出来是这样的
之后还有就不把图搞过来了
那既然出现了问题,那就说明还没有完成我们需要的东西,那这样的话怎么去修改呢?在这里其实我们已经完成了所有的三位数的打印,其实加一个条件就是我这个三位数不能一样,而且加上一个关于计数的内容其实就可以。加一个条件,这个就是条件语句if 所以写一个if就好了
count=0
for i in range(1,4):
for x in range(1,4):
for y in range(1,4):
if i!=y and y!=x and x!= i:
a=i*100+y*10+x
count+=1
print(a)
print(count)
这个就是完成的代码,count一开始是零,就是关于我有几个数字的意思。if这里表示的便是我需要满足一个条件就是关于i不等于y y不等于x x不等于i这样子的情况才能进入这个循环,才能最后打印出来,这个count+=1之后也会重点讲到,今天先出现以下,这个的意思就是count(新的值)=count(老的值)+1,这个样子,也就是说我的出现了第一个数字,满足了if的条件,进入了这个条件语句,然后count(老的)=0+1 这样产生了新的count值,之后循环就好。
这个就是我需要的答案。
但是依旧没有接近我想要的解释,因为最后一个print为啥不需要缩进,这个问题非常的重要,因为不同的缩进所打印出来的东西是不一样的,print在外面表示我的for循环已经结束,作为一个计数的变量,当然需要在所有的循环完成之后才能打印。
4.2while循环
whlie循环与for循环一样,都属于循环语句,基本的作用差不多但是结构会发生变化,这两个还是有有一定的区别的。
4.2.1基本的while循环
基本while循环的结构
如果使用 while
循环,只要条件为真,我们就可以执行一组语句。
whlie 条件:
命令
else:
命令
这样子的一个格式,然后给一个关于例子来更加好的了解这个东西
i = 1
while i < 9:
print(i)
i += 1
这里来看一下这个代码,我来解释一下,(注意分析代码需要从上往下去看)如果i=1的情况下,进入while循环,首先判断一下i是否小于9,是的话进入代码块,然后首先要打印出来i那么第一个输出的就是1,接着又来了刚才讲到的那个结构,i(新的)=i(老的)+1.这样i的值从1变成2,接着就是whlie循环的能力了,因为有些初学者会认为while与if好像啊,都是判断一下对不对。这个就错了,while循环的主要能力就是循环,在不满足while的条件之前他会一直循环直到结束。
所以第二个打印出来就是2,3这样子下去
然后这里有一个非常重要的知识点,就是关于这个i+=1这个能不能不写。答案是不行,因为在开始介绍的时候就说过,for循环与while循环同是循环语句,但是这两个东西有不一样,while循环没有像for循环有这个能力自动将范围中的数字给一一搬下来,所以我们需要手动改变数字的值。不然的话一直都是1,一直在循环,计算机会一直运作,陷入了一个死循环。