Python零基础入门教学-循环控制

作者: 叮噹貓の神 分类: IT猫之家资源中心,python 教学 发布时间: 2019-11-09 12:55
人生苦短,我用python.
人生苦短,我用python

Hi,大家好,欢迎大家参阅本站的Python零基础入门教学系列课程,我是本系列教程的作者叮当猫,在往后的日子里我将不定时的更新这一系列教学课程,本系列课程主要以文字或视频教学方式为主欢迎大家参阅,如在学习中有任何疑问或建议,我们都欢迎您向我们提出,同时也欢迎加入我们的QQ技术交流群探讨:544185435。

Python – 循环控制

循环,又称作遍历,亦有迭代的意思,通常用作遍历序列元素组合,在编程语言中,循环控制语句不外这几种乎:while循环、for循环、do…while循环、以及比较抽象的递归等等这些,但在python中循环只提供了while和for循环;循环控制通常结合序列或条件语句执行。

python – While循环

while循环只有在满足条件的情况下才会重复的去执行同一段代码,原型为:while 条件:执行语句…使用while循环时如果没有条件,我们可以直接使用True作为判断的依据,而这里的True指的是死循环(即除非你代码块中加入了打断函数,否则它将无限循环的执行下去)。

num = 0
while num <= 5:
    print(num)
    num += 1

上面代码中定义了一个num变量,通过while循环判断是否小于或者等于5,如果条件成立则num自增1;上述案例输出的结果应为:0、1、2、3、4、5;

python – For循环

for循环通常用于迭代序列元素组合,比如常见的迭代一个列表,或者迭代数值;在python中for循环搭配in使用,如for x in list: 意思是说将x作为一个变量进行遍历list里的所有元素,每循环一次x则表示当前的元素,假设有这么一个列表:list = [‘python’,’JavaScript’,’C#’,’C++’];那么我们迭代的语法为:for item in list: 大家可以看到我将x换成了item,因为这个是变量的标识,所以这个变量名是可以改变的,我们可以随便定义,只要符合python的规则就行,那么当我们进行第一次的迭代的时候,item的值为“python”,第二次迭代的时候item则变成了“JavaScript”以此类推直到迭代至最后一个元素时跳出循环,与while不同的是,它不能无限循环。

list = ['itmaohome','baidu.com','google.com']
for item in list:
    print(item)#迭代输出以上的每个元素
str = 'I Love itmaohome Forever.'
for item in str:
    print(item)#先别忙着打印输出,大家不妨设想下这个的输出结果会是什么呢?
for i in range(30):
    print(i)#迭代输出0-29

上述代码为for循环最最基本的迭代案例,从上述可以看到它可以迭代列表、字符串,事实上,它也可以迭代字典、元祖以及集合等序列的元素,值得一提的是,我们上述是否有看到一个关键函数“range”呢?它是python内置的函数,主要作用是生成范围内的数值列表,比如上述的range(30),会生成从0-29的列表:[0,1,2,3…..29],So,如果我们要迭代数值范围的话,就不要一个个的往列表里添加了,直接“range”生成即可。

python – 循环跳出/中断机制

So,那么现在我们已经学会如何简单的使用while循环与for循环了,但好像还差了点什么呢?没错,就如同刚开始介绍while循环时所言,当条件成立时,它就退出了循环,那么,退出循环其实也是有两种形式的,一种是上面说的条件成立,而另一种则是通过中断机制实现的,在python中,有三个函数可以打断循环,分别是:break、continue、以及return; break常用于跳出本次循环, continue 常用于结束本次迭代,而return则直接结束整个方法(注:return也用作函数返回,后续章节中将详细讲解)。

python – break中断机制

break函数在while循环与for循环中均可使用,它的主要作用是退出当前循环,假设有一个有个变量num = 0;我们需要它每次循环自增1,当到达30的时候就退出那么我们可以有两种方式实现,第一种方式就是前面的条件判断,我们可以这么写:while num != 30:num +=1 ,而另一种方式是通过break来打断它,如:while True:if num == 30 break;这仅仅只是一个示例,其实我们在循环的时候,并非一定要等到循环执行到最后才能中断,只要条件成立,我们便可直接中断循环从而返回结果;

#通过break打断循环
num = 0
while True:
    if num == 20:
        break
    num += 1
#条件成立时退出循环
num = 0
while num !=30:
    num += 1

上面两种循环结束方式大家可以动手操作下,看看它们有啥区别!

python – continue 中断机制

continue函数通常使用在for循环之中,主要作用是中断当前迭代,跳过下面的代码直接进入下一轮迭代,同样我们可以通过条件判断从而利用 continue 中断当前迭代。

#巧妙的利用continue排除不想看到的内容,只打印想要的内容
for i in range(30):
    if i == 10 or i == 20:
        continue #打断本次迭代,不再往下执行,将不会输出10和20
    print(i)

python – return 中断机制

return函数常用作函数返回值(后续文章中将会详细讲解返回值),也可用于结束当前某个方法,且无返回值;当然也可以用于结束所有循环(包括嵌套循环)甚至可以结束整个程序,由此可见,return不可随意使用,一般情况下,我们使用break以及continue即可。

num = 0
while True:
    if num == 30:
        return
    num += 1 

它的使用方式其实跟前两个函数都是一样的,这里就不再阐述了。

python – 嵌套循环

在python中,循环是可以嵌套的,比如一个while循环中嵌套一个for循环或多个,甚至还可以在里面嵌套多个while循环,使用方式跟一层循环一样,只是如果想要退出循环只能一层一层的退出。以下是一个从2-100中找出所有素数的小案例:

i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break
      j = j + 1
   if (j > i/j) : print(i," 是素数")
   i = i + 1
print "Good bye!"

那么咱们也来看下for循环的嵌套写法,我们以著名的冒泡排序法来做演示:

array = [9,2,7,4,5,6,3,8,1,10]
L = len(array)
for i in range(L):
    for j in range(L-i):
        if array[L-j-1]<array[L-j-2]:
            array[L-j-1],array[L-j-2]=array[L-j-2],array[L-j-1]
print(array)

冒泡排序又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 (摘自wiki自由百科)

用循环控制重写猜拳小游戏

大家还记得上一节讲了什么吗?如果忘记了的话,就点这里返回去看看哦,我们在上一节的末尾中用python实现了一个猜拳小游戏,不知大家是否发现了,每次我们要执行命令才能启动程序,这样每次玩都得启动一次,那不是很不过瘾不是吗?那么接下来我们就使用循环来完善它这个功能吧!

import random
print('---------- Hi,欢迎来玩it猫猜拳游戏 ----------')
while True:
    play = int(input('请您出招:1.石头 2.剪刀 3.布:'))
    print(f'您选择的是:{play}')
    print('现在到NPC出招.')
    npc = random.randint(1,3)
    print(f'npc选择的是:{npc}')
    if play == 1 and npc == 1:
        print('您出的是:石头,npc出的是:石头;本局平局.')
    elif play == 1 and npc == 2:
        print('您出的是:石头,npc出的是:剪刀;恭喜你赢了!')
    elif play == 1 and npc == 3:
        print('您出的是:石头,npc出的是:布;很遗憾你输了!')
    elif play == 2 and npc == 1:
        print('您出的是:剪刀,npc出的是:石头;很遗憾你输了!')
    elif play == 2 and npc == 2:
        print('您出的是:剪刀,npc出的是:剪刀;本局平局.')
    elif play == 2 and npc == 3:
        print('您出的是:剪刀,npc出的是:布;恭喜你赢了!')
    elif play == 3 and npc == 1:
        print('您出的是:布,npc出的是:石头;恭喜你赢了!')
    elif play == 3 and npc == 2:
        print('您出的是:布,npc出的是:剪刀;很遗憾你输了!')
    elif play == 3 and npc == 3:
        print('您出的是:布,npc出的是:布;本局平局.')
    else:
        print('亲,您出的是啥?请输入:1.石头 2.剪刀 3.布')
#================输出效果================#
---------- Hi,欢迎来玩it猫猜拳游戏 ----------
请您出招:1.石头 2.剪刀 3.布:3
您选择的是:3
现在到NPC出招.
npc选择的是:2
您出的是:布,npc出的是:剪刀;很遗憾你输了!
请您出招:1.石头 2.剪刀 3.布:1
您选择的是:1
现在到NPC出招.
npc选择的是:1
您出的是:石头,npc出的是:石头;本局平局.

就是简简单单的将上次的代码套入到while循环中即可实现无限重启,而不需要再次执行python xx.py运行;够简单吧?嗯哼?还是缺少了点东西?一般程序不都是有个退出的方式的吗?比如我们按下9键之后退出程序,怎么实现呢?其实也是很简单,仅仅只需要加上一个判断即可,请看以下案例:

import random
print('---------- Hi,欢迎来玩it猫猜拳游戏 ----------')
while True:
    play = int(input('请您出招:1.石头 2.剪刀 3.布 9.退出:'))
    if play == 9:
        print('亲,欢迎再次光临哦,再见!')
        break
    print(f'您选择的是:{play}')
    print('现在到NPC出招.')
    npc = random.randint(1,3)
    print(f'npc选择的是:{npc}')
    if play == 1 and npc == 1:
        print('您出的是:石头,npc出的是:石头;本局平局.')
    elif play == 1 and npc == 2:
        print('您出的是:石头,npc出的是:剪刀;恭喜你赢了!')
    elif play == 1 and npc == 3:
        print('您出的是:石头,npc出的是:布;很遗憾你输了!')
    elif play == 2 and npc == 1:
        print('您出的是:剪刀,npc出的是:石头;很遗憾你输了!')
    elif play == 2 and npc == 2:
        print('您出的是:剪刀,npc出的是:剪刀;本局平局.')
    elif play == 2 and npc == 3:
        print('您出的是:剪刀,npc出的是:布;恭喜你赢了!')
    elif play == 3 and npc == 1:
        print('您出的是:布,npc出的是:石头;恭喜你赢了!')
    elif play == 3 and npc == 2:
        print('您出的是:布,npc出的是:剪刀;很遗憾你输了!')
    elif play == 3 and npc == 3:
        print('您出的是:布,npc出的是:布;本局平局.')
    else:
        print('亲,您出的是啥?请输入:1.石头 2.剪刀 3.布')
#================输出效果================#
---------- Hi,欢迎来玩it猫猜拳游戏 ----------
请您出招:1.石头 2.剪刀 3.布 9.退出:3
您选择的是:3
现在到NPC出招.
npc选择的是:2
您出的是:布,npc出的是:剪刀;很遗憾你输了!
请您出招:1.石头 2.剪刀 3.布 9.退出:2
您选择的是:2
现在到NPC出招.
npc选择的是:2
您出的是:剪刀,npc出的是:剪刀;本局平局.
请您出招:1.石头 2.剪刀 3.布 9.退出:9
亲,欢迎再次光临哦,再见!

总结

今天我们着重的讲解了python里的循环控制,在python中,共有两种循环;for循环与while循环,它们都可以嵌套循环,并且,我们还学习了循环的中断机制,让循环满足条件后自行结束并退出;另,我们还对上一期的猜拳小游戏进行了一些改进,令其支持无限重启,好了,到目前为止,我们基本上已经将python的基础讲解完了,那么在下一期我们将会带领大家回顾一下我们在这章节中学到的所有知识以及完善之前没有涉及到的内容;包括但不限于(注释的使用、变量的命名规则、以及字符串的部分高级函数的使用方式)欢迎大家继续参阅!

知识共享许可协议 本文遵循 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议。未经本站授权仅允许进行复制或转载,禁止二次利用,版权归IT猫之家所有!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!