python-循环

    1. 循环就是然计算机重复的帮我们做一件事情,人都讨厌做重复枯燥无味的事情,像推磨,人觉得枯燥乏味,然后就有了驴推磨,一圈一圈的循环,人一圈一圈的推岂不累死,所以计算机也一样,当有重复的工作,跟计算机也一样,当有重复的工作,跟计算机下命令,你重复做就好了,那么python里用来下命令的这个语法就只有 while和 for两个。
    2. while循环
      1. 顾名思义,当。。。。的时候,就是说当满足条件的时候,我运行while下面的代码,反之,当不满足的时候,我们就不运行,看到这里是不是感觉和上面的 if判断是一样的?对,没错是一样的,但是while的区别在于循环,意思就是我运行完while下面的代码后,又跑到while开始这里来了,继续判断,如果为真运行下面的代码,为假则结束,然后运行完又回到判断条件这里来了,这是你也发现了,只要条件一直为真,那么他将马不停蹄的运行下去,就跟永动机一样,这就是所谓的死循环,所以我们用来判断的这个条件,不能是一个常量,判断条件需要实时变化的,不然就是一个死循环,永远也不会结束,看下伪代码:
      2. while 我是菜鸟:
            加最辛苦的班,领最低的工资。
      3. 如果我不努力学习、进取,一直是菜鸟,我就一直循环这个状态,这就是死循环。那么如何结束掉这个死循环呢,当然是努力、进取提升自己,改变这个判断条件的值,不就结束掉了么,所以我们的这个while条件需要是一个变化的值才行,不然就一直运行下去了,在python里,常用的是用一个计数器来计数,当计数达到预期的值就终止循环,看下代码。
      4. 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

         

      5. 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

           

    3. for循环
      1. for 的翻译是"为了",python这里就是说为了什么而循环,比如后面跟一个列表,为了列表里面的元素循环,循环取列表里的元素,就好比后面跟的是自己的孩子,肯定不能厚此薄彼,全部都要照顾到。
      2. for循环后面必须接一个可迭代的对象,什么是可迭代的对象呢?先把可以它想象成糖葫芦,以后自然会理解,这个迭代的对象就是一串糖葫芦,可以每次取一颗下来,这就是可迭代。for循环就是每次取一颗糖葫芦出来,直到取完为止,也就是说你有几个糖葫芦就循环几次
      3. 这样理解应该比较好理解,那么python里有哪些可迭代的对象呢?用的比较多的就只有这几种:
        1. 字符串:每次取一个字符
        2. 列表:每次取一个元素
        3. 元祖:每次取一个元素
        4. 集合:每次取一个元素
        5. 字典:每次取一个字典的key()
        6. 不可迭代:数字,小数
    4. 用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

         

    5. 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
    6. 课后练习
      1. 综合上面的输入、条件判断和循环等知识点,来写个猜数字的小游戏,游戏规则:产生一个1-100之间的随机数字,接收用户输入,判断输入和随机的值,相等打印猜对了,游戏结束;输入值大于随机的值,提示猜大了,继续;输入值小于于随机的值,提示猜小了,继续。产生随机数,使用模块random,方法:num=random.randint(1,101),num就是一个随机数。
        1.  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("猜小了")
            

posted on 2020-11-23 14:15  VickyChen0308  阅读(116)  评论(0编辑  收藏  举报