python-循环
- 循环就是然计算机重复的帮我们做一件事情,人都讨厌做重复枯燥无味的事情,像推磨,人觉得枯燥乏味,然后就有了驴推磨,一圈一圈的循环,人一圈一圈的推岂不累死,所以计算机也一样,当有重复的工作,跟计算机也一样,当有重复的工作,跟计算机下命令,你重复做就好了,那么python里用来下命令的这个语法就只有 while和 for两个。
- while循环
- 顾名思义,当。。。。的时候,就是说当满足条件的时候,我运行while下面的代码,反之,当不满足的时候,我们就不运行,看到这里是不是感觉和上面的 if判断是一样的?对,没错是一样的,但是while的区别在于循环,意思就是我运行完while下面的代码后,又跑到while开始这里来了,继续判断,如果为真运行下面的代码,为假则结束,然后运行完又回到判断条件这里来了,这是你也发现了,只要条件一直为真,那么他将马不停蹄的运行下去,就跟永动机一样,这就是所谓的死循环,所以我们用来判断的这个条件,不能是一个常量,判断条件需要实时变化的,不然就是一个死循环,永远也不会结束,看下伪代码:
- while 我是菜鸟:
加最辛苦的班,领最低的工资。 - 如果我不努力学习、进取,一直是菜鸟,我就一直循环这个状态,这就是死循环。那么如何结束掉这个死循环呢,当然是努力、进取提升自己,改变这个判断条件的值,不就结束掉了么,所以我们的这个while条件需要是一个变化的值才行,不然就一直运行下去了,在python里,常用的是用一个计数器来计数,当计数达到预期的值就终止循环,看下代码。
-
1 i = 0 #定义一个变量,用来判断 2 while i<=10: #判断变量i的值是否<=10,满足条件往下走 3 i +=1 #计数,每次循环后i自增1 4 print(i) #打印i,这里会打印1-11 5 else: 6 print('over') #这里会正产结束,所以打印1-11后,会打印over
- while循环里的break和 continue:
- break即破坏掉这个循环,强制结束,while循环里只要遇到break就结束,这个时候就好比驴生病了,不再循环拉磨,直接结束;
-
1 i = 0 2 while i<=10: 3 i+=1 4 if i == 5: #当i的值等于5时,执行下面的break 5 break #while遇到break时,就结束掉整个循环了,所以这段代码的执行结果是1-4 6 print(i) 7 else: #当上面的while循环正常结束,运行else 8 print('over')#这里非正常结束,所以打印1-4,不打印over
- continue就是结束掉本次循环,继续下一个循环,就好比磨坏了,要重新修一下,这一圈没跑完就不跑了,然后回到开始拉磨的起点,重新拉磨。代码如下:
-
1 i = 0 2 while i <=10: 3 i +=1 4 if i == 5: #当i的值等于5时,执行下面的continue语句 5 continue #当while遇上continue时,就结束掉本次的循环,继续下一个循环,所以这段代码执行的结果是1-4,6-11 6 print(i) 7 else: #当上面的while循环正常结束,运行else 8 print('over') #这里会正常结束,所以打印1-4,6-11后,会打印over
- for循环
- for 的翻译是"为了",python这里就是说为了什么而循环,比如后面跟一个列表,为了列表里面的元素循环,循环取列表里的元素,就好比后面跟的是自己的孩子,肯定不能厚此薄彼,全部都要照顾到。
- for循环后面必须接一个可迭代的对象,什么是可迭代的对象呢?先把可以它想象成糖葫芦,以后自然会理解,这个迭代的对象就是一串糖葫芦,可以每次取一颗下来,这就是可迭代。for循环就是每次取一颗糖葫芦出来,直到取完为止,也就是说你有几个糖葫芦就循环几次
- 这样理解应该比较好理解,那么python里有哪些可迭代的对象呢?用的比较多的就只有这几种:
- 字符串:每次取一个字符
- 列表:每次取一个元素
- 元祖:每次取一个元素
- 集合:每次取一个元素
- 字典:每次取一个字典的key()
- 不可迭代:数字,小数
- 用for循环,比较while而言更方便,以后基本都会用for循环,因为不像while需用设置计算器,for永远也不用担心会进入死循环,它迭代完后面的可迭代对象里的值之后,就结束了,不存在死循环,所以在这点上比while好用。其他和上面的while语法差不多,代码如下
- break语句
-
1 for i in ['a','b','c']: 2 if i =='b': #当i的值等于'b'时,执行下面的break 3 break #for遇到break时,就结束掉整个循环了,所以这段代码的运行结果为'a' 4 print(i) 5 else: #当上面for循环正常结束时,运行else 6 print('over') #这里非正常结束,在打印'a'后,不打印over
- continue语句
-
1 for i in ['a','b','c']: 2 if i =='b': #当i的值等于'b'时,执行下面的continue 3 continue #当for循环遇到continue时,当前循环结束,执行下一个循环,所以这段代码的运行结果为'a''c' 4 print(i) 5 else: #当上面for循环正常结束时,运行else 6 print('over') #这里正常结束,在打印'a''c'后,打印over
- for循环记住一下几点,在后面再细讲
- 循环list实质是根据下标循环里面的元素
- 循环list的时候,切记不要删除list元素,不然会导致取值错乱,解决方法,用copy方法设置一个新list
- 例子
-
word = ['cat','window','defenestrate'] for w in word[:]: if len(w) > 6: word.insert(0,w) print(word) 结果为: ['defenestrate', 'cat', 'window', 'defenestrate']
-
在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。
- 但是如果没有copy序列,即for w in word:则会无限制的执行插入操作
-
- 例子
- 只要能通过下标取值的对象,都能用for循环
- 循环文件对象的时候,实质是循环文件里的行内容
- 循环字典的时候,实质是循环key
- 课后练习
- 综合上面的输入、条件判断和循环等知识点,来写个猜数字的小游戏,游戏规则:产生一个1-100之间的随机数字,接收用户输入,判断输入和随机的值,相等打印猜对了,游戏结束;输入值大于随机的值,提示猜大了,继续;输入值小于于随机的值,提示猜小了,继续。产生随机数,使用模块random,方法:num=random.randint(1,101),num就是一个随机数。
-
1 import random 2 random = random.randint(1,101) 3 print(random) 4 i = 0 5 while i <random: 6 i+=1 7 8 input_num = input('请输入数字') 9 input_num = float(input_num) 10 11 if input_num ==random: 12 print("猜对了") 13 break 14 elif input_num>random: 15 print("猜大了") 16 else: 17 print("猜小了")
-
- 综合上面的输入、条件判断和循环等知识点,来写个猜数字的小游戏,游戏规则:产生一个1-100之间的随机数字,接收用户输入,判断输入和随机的值,相等打印猜对了,游戏结束;输入值大于随机的值,提示猜大了,继续;输入值小于于随机的值,提示猜小了,继续。产生随机数,使用模块random,方法:num=random.randint(1,101),num就是一个随机数。
posted on 2020-11-23 14:15 VickyChen0308 阅读(118) 评论(0) 编辑 收藏 举报