循环 订阅
《循环》是一首由hank创作的歌曲。于2011年3月30日在著名弹幕网站AcFun以Hank本人的名义发布,后遂有字幕君(即在弹幕评论中以文字的形式构造歌词字幕以及各种图像)在该视频上发表了神字幕。 展开全文
《循环》是一首由hank创作的歌曲。于2011年3月30日在著名弹幕网站AcFun以Hank本人的名义发布,后遂有字幕君(即在弹幕评论中以文字的形式构造歌词字幕以及各种图像)在该视频上发表了神字幕。
信息
歌曲原唱
葛平
中文名称
循环
主    唱
葛平
发行时间
2011年3月30日
曲    源
Long kiss goodbye
外文名称
cycle
填    词
Hank
歌曲时长
04:14
循环基本信息
主唱:葛平作词:Hank曲源:Long kiss goodbyeLong Kiss Good Bye是日本人气动漫《火影忍者》的第22首ED(疾风传ED7),由日本女子二人hip hop组合Halcali08年演唱。
收起全文
精华内容
下载资源
问答
  • Map集合循环遍历的几种方式

    万次阅读 多人点赞 2018-01-21 22:37:06
    package cn.jdbc.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; ...* Map 集合的循环遍历 * @data 2018.1.21 * */ public class TestMap { ...

    package cn.jdbc.test;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;

    /**
     * Map 集合的循环遍历
     * @data 2018.1.21
     *
     */
    public class TestMap {

             public static void main(String[] args) {
                  Map<String, Object> map = new HashMap<String, Object>();
                  map.put("aaa", 111);
                  map.put("bbb", 222);
                  map.put("ccc", 333);
                  map.put("ddd", 444);
                  //Map集合循环遍历方式一  
                 System.out.println("第一种:通过Map.keySet()遍历key和value:");
                for(String key:map.keySet()){//keySet获取map集合key的集合  然后在遍历key即可
                    String value = map.get(key).toString();//
                    System.out.println("key:"+key+" vlaue:"+value);
                }

               //Map集合循环遍历二  通过迭代器的方式
               System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:");
               Iterator<Entry<String, Object>> it = map.entrySet().iterator();
               while(it.hasNext()){
                    Entry<String, Object> entry = it.next();
                    System.out.println("key:"+entry.getKey()+"  key:"+entry.getValue());
              }

             // Map集合循环遍历方式三 推荐,尤其是容量大时
            System.out.println("第三种:通过Map.entrySet遍历key和value");
            for (Map.Entry<String, Object> m : map.entrySet()) {
            System.out.println("key:" + m.getKey() + " value:" + m.getValue());
        }

             // 第四种:
             System.out.println("第四种:通过Map.values()遍历所有的value,但不能遍历key");
            for(Object m:map.values()){
              System.out.println(m);
            }
       }
    }

    展开全文
  • matlab——for循环

    万次阅读 多人点赞 2019-10-20 14:57:52
    简单for循环 for循环用来循环处理数据。 例:输出1~100的和 >> clear >> sum = 0; >> for i = 1:100 sum = sum +i; end >> sum sum = 5050 解释:i从1到100,每次增加一个,该共循环...

    简单for循环

    for循环用来循环处理数据。
    例:输出1~100的和

    >> clear
    >> sum = 0;
    >> for i = 1:100
           sum = sum +i;
       end
    >> sum
    
    sum =
    
            5050
    

    解释:i从1到100,每次增加一个,该共循环100次
    注意:分号的位置;不能使用“+=”符号;每写一层循环,必须以end结尾

    带有步长的for循环

    例:输出1到10之间的奇数和

    
    >> clear
    >> sum = 0;
    >> for i = 1:2:10
           sum = sum + i;
       end
    >> sum
    
    sum =
    
        25
    

    解释:i = 1:2:10中间的2表示步长,表示从1到10,每次增加2,即1,3,5,7,9五个数之和;步长也可以为负数

    对向量和矩阵的遍历

    1. 对向量的遍历
    >> clear
    >> A = rand(1,4);
    >> for i = A
           i
       end
    
    i =
    
        0.9572
    
    
    i =
    
        0.4854
    
    
    i =
    
        0.8003
    
    
    i =
    
        0.1419
    

    解释:rand函数用于随机生成0~1之间的数,rand(1,4)生成1*4的列向量。

    1. 对矩阵的遍历
    >> A = magic(4);
    >> A
    
    A =
    
        16     2     3    13
         5    11    10     8
         9     7     6    12
         4    14    15     1
    
    >> for i = A;
           i
       end
    
    i =
    
        16
         5
         9
         4
    
    
    i =
    
         2
        11
         7
        14
    
    
    i =
    
         3
        10
         6
        15
    
    
    i =
    
        13
         8
        12
         1
    

    解释:magic(n)函数用于生成任意一行或一列或主副对角线之和相等的方阵,对矩阵的循环遍历是依次取出矩阵中的每一列元素

    break和continue的使用

    break用于终止离它最近的一层for循环;
    continue用于跳过离它最近的一层for循环,接着执行下一次循环

    >> x = 1;
    >> for i = 1:2:10
           if i > 7
              break
           else
              x = x* i
           end
       end
    
    x =
    
         1
    
    
    x =
    
         3
    
    
    x =
    
        15
    
    
    x =
    
       105
    
    >> sum = 0;
    >> for i = 1:6
           if i == 4
              continue
           else
              sum = sum + i
           end
       end;
    
    sum =
    
         1
    
    
    sum =
    
         3
    
    
    sum =
    
         6
    
    
    sum =
    
        11
    
    
    sum =
    
        17
    

    多层for循环

    for循环可以按照需要进行嵌套。

    >> for i = 1:2:6
           for j = 1:3
               y = i * j
           end
       end
    
    y =
    
         1
    
    
    y =
    
         2
    
    
    y =
    
         3
    
    
    y =
    
         3
    
    
    y =
    
         6
    
    
    y =
    
         9
    
    
    y =
    
         5
    
    
    y =
    
        10
    
    
    y =
    
        15
    
    
    展开全文
  • python——循环(for循环、while循环)及练习

    万次阅读 多人点赞 2019-02-20 17:11:44
    1.while 循环的基本使用 2.break 和 continue 3.while 循环嵌套 在程序开发中,一共有三种流程方式: 顺序:从上向下,顺序执行代码 分支:根据条件判断,决定执行代码的分支 循环:让特定代码重复执行(解决程序员...

    目标程序的三大流程

    1.while 循环的基本使用		
    2.break 和 continue		
    3.while 循环嵌套
    

    在程序开发中,一共有三种流程方式:

    顺序:从上向下,顺序执行代码		
    分支:根据条件判断,决定执行代码的分支		
    循环:让特定代码重复执行(解决程序员重复工作)
    

    一、for循环

    1、基本用法

    for 循环使用的语法:

    “”"
    for 变量 in range(10):
    循环需要执行的代码
    else:
    循环结束时,需要执行的代码
    “”"

    for i in range(5):
    	print(i)
    

    在这里插入图片描述

    range的用法:

    “”"
    range(stop): 0~stop-1
    range(start,stop): start~stop-1
    range(start,stop,step): start~stop step(步长)
    “”"
    测试:

    >>> range(5)
    [0, 1, 2, 3, 4]
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(1,11)
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> range(1,11,2)        ##取出奇数
    [1, 3, 5, 7, 9]
    >>> range(0,11,2)        ##取出偶数
    [0, 2, 4, 6, 8, 10]
    >>>
    

    2、练习:

    (1)分别求1~100内偶数之和
    sum = 0
    for i in range(2,101,2):
        sum += i
    print(sum)
    

    在这里插入图片描述

    (2)求1~100之间所有奇数之和
    sum1 = 0
    for i in range(1,101,2):
        sum1 += i
    print(sum1)
    

    在这里插入图片描述

    (3)求阶乘
    # 求阶乘
    num = int(input('请输入一个数字:'))
    res = 1
    for i in range(1, num + 1):   
    	res*=i
    print('%d的阶乘为:%d' %(num,res))
    

    在这里插入图片描述

    (4)有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数
    sum = 0
    for i in (1,2,3,4):
        for j in (1,2,3,4):
                for k in (1,2,3,4):
                            if i != j and j!= k and i != k: 
                                           sum += 1
    print('共有%d种组合' %sum)
    

    在这里插入图片描述

    (5)有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数
    for x in range(1,5):
        for y in range(1,5):
            for z in range(1,5):
                    if (x!=y) and (y!=z) and (z!=x):
                            print("%d%d%d" % (x, y, z))
    

    在这里插入图片描述

    优化后
    i = 0
    for x in range(1,5):
        for y in range(1,5):
            for z in range(1,5):
                    if (x!=y) and (y!=z) and (z!=x):
                        i += 1
                        if i%4:
                            print("%d%d%d" % (x, y, z), end=" | ")
                        else:
                            print("%d%d%d" % (x, y, z))
    

    在这里插入图片描述

    (6)实现命令行提示符
    1. break:跳出整个循环,不会再执行循环后续的内容

    2. continue:跳出本次循环,continue后面的代码不再执行,但是还是会继续循环

    3. exit():结束程序的运行

      import os
      for i in range(1000):
      cmd = input(’[kiosk@test ~]$ ')
      if cmd:
      if cmd == ‘exit’:
      break
      else:
      print(‘run %s’ %(cmd))
      os.system(cmd)
      else:
      continue
      在这里插入图片描述

    (7)9*9乘法表
    for i in range(1,10):
        for j in range(1,i+1):
                print('%d * %d = %d\t' %(i,j,i*j),end='')
        print()
    

    在这里插入图片描述

    (8)用户登录管理系统

    用户登录需求:
    1.输入用户名和密码;
    2.判断用户名和密码是否正确(name=‘root’,passwd=‘westos’)
    3.登录仅有三次机会,超过3次会报错

    for i in range(3):
        user = input('请输入用户名:')
        passwd = input('请输入密码:')    
        if user=='root' and passwd == 'westos':        
            print('%s用户登录成功' %user)        
            break    
        else:        
            print('密码错误,请重新输入密码,您还剩%d次机会' %(2-i))
    else:
        print('超过三次,登录失败')
    

    在这里插入图片描述
    在这里插入图片描述

    (9)求最大公约数和最小公倍数

    输入两个数值:
    求两个数的最大公约数和最小公倍数
    最小公倍数=(num1 * num2) / 最大公约数

    # 输入两个数字
    num1=int(input('Num1:'))
    num2=int(input('Num2:')) 
    # 找出两个数中的较小者
    min_num = min(num1,num2) 
    # 确定最大公约数
    for i in range(1,min_num+1):    
        if num1 % i ==0 and num2 % i ==0:        
            max_commer = i
    # 求最小公倍数
    min_commer =int(num1 * num2)/max_commer 
    print('%s 和 %s 的最大公约数为%s' %(num1,num2,max_commer))
    print('%s 和 %s 的最小公倍数为%s' %(num1,num2,min_commer))
    

    在这里插入图片描述

    二、While循环

    循环的作用就是让指定的代码重复的执行,while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行

    while 条件():    
        条件满足时,做的事情1    
        条件满足时,做的事情2
        ......
    
    1、基本用法
    # 定义一个整数变量,记录循环的次数
    i=1
    # 开始循环
    while i <= 3:    
    # 希望循环内执行的代码    
        print('hello python')    
        # 处理计数器
        i+=1
    

    在这里插入图片描述

    2、死循环
    while True:
        print('hello python')
    
    3、求1~100之间数字的和
    # 定义记录循环次数的变量
    i = 0
    # 定义结果变量
    result = 0
    while i <= 100:    
        result+=i    
        # 处理计数器    
        i+=1
    # 输出结果
    print('1~100之间的数字之和为:%d' %result)
    

    在这里插入图片描述

    4、用户登录管理
    trycount = 0
    
    while trycount < 3:
        name = input('用户名:')
        passwd = input('密码:')
        if name == 'root' and passwd == 'westos':
            print('登录成功')
            break
        else:
            print('登录失败')
            print('您还剩余%d次机会' %(2 - trycount))
            trycount += 1
    else:
        print('登录次数超过三次,请稍后登录')
    

    在这里插入图片描述
    在这里插入图片描述

    5、while 循环嵌套

    while 里面还有 while

    1.在控制台连续输出五行*,每一行星号的数量依次递增	
    2.完成 5 行内容的简单输出	分析每行内部的*应该如何处理
    输出
    *
    **
    *** 
    ***** 
    *******
    

    如下:
    第一种:

    # 1.控制行
        for i in range(6):
            # 2.控制*的数量
            for j in range(6):
                if i > j :
                    print("*",end='')
            print(" ")
    

    在这里插入图片描述
    第二种

    i =1
    while i <= 5:
        j = 1
        while j <= (5 - i):
            print(" ",end='')
            j += 1
        while (j >(5-i) and j <= 5):
            print("*",end='')
            j += 1
        print()
        i += 1   
    

    在这里插入图片描述

    如果想要星星倒过来呢

    第三种:

    # 1.控制行
    for i in range(6):
        # 2.控制*的数量
        for j in range(6):
            if i < j :
                print("*",end='')
        print(" ")
    

    在这里插入图片描述
    第四种:

    i = 1
    while i <= 5:
        j = 1
        while j < i:
            print(" ",end='')
            j += 1
        while j >= i and j <= 5:
            print("*",end='')
            j += 1
        print()
        i += 1
    

    在这里插入图片描述

    6、猜数字游戏

    猜数字游戏:
    1.系统随机生成一个1~100的数字;
    2.用户共有5次机会猜;
    3.如果用户猜测数字大于系统给出的数字,打印"too big"
    4.如果用户猜测数字小于系统给出的数字,打印"too small"
    5.如果用户猜测的数字等于系统给出的数字,打印"恭喜中奖",并退出循环

    import random
    
    num = random.randint(1,100)
    print(num)
    
    i = 1
    while i <= 5:
        ans = int(input("请猜数:"))
        if ans > num:
            print("too big,还剩%d次机会"%(5-i))
        elif ans < num:
            print("too small,还剩%d次机会"%(5-i))
        else:
            print("恭喜中奖!!!")
            break
        i += 1
    

    在这里插入图片描述

    展开全文
  • 理解 Python 的 for 循环

    万次阅读 多人点赞 2019-04-19 21:18:55
    在本篇博客中,我们将讨论 Python 中 for 循环的原理。 我们将从一组基本例子和它的语法开始,还将讨论与 for 循环关联的 else 代码块的用处。 然后我们将介绍迭代对象、迭代器和迭代器协议,还会学习如何创建自己...

    在本篇博客中,我们将讨论 Python 中 for 循环的原理。

    我们将从一组基本例子和它的语法开始,还将讨论与 for 循环关联的 else 代码块的用处。

    然后我们将介绍迭代对象、迭代器和迭代器协议,还会学习如何创建自己的迭代对象和迭代器。

    之后,我们将讨论如何使用迭代对象和迭代器实现 for 循环,以及利用 while 循环通过迭代器协议实现 for 循环逻辑。

    最后,我们将反编译一个简单的 for 循环,并逐步介绍 Python 解释器在执行 for 循环时执行的指令,以满足大家的好奇心。这些有助于理解 for 循环运行时的内部工作原理。

    Python的for循环

    for 语句是 Python 中执行迭代的两个语句之一,另一个语句是 while。如果你对 Python 的迭代并不是很熟悉的话,Python中的迭代:for、while、break、以及continue语句是一个不错的切入点。

    Python 中,for 循环用于遍历一个迭代对象的所有元素。循环内的语句段会针对迭代对象的每一个元素项目都执行一次。暂且可以将迭代对象想象成一个对象集合,我们可以一个个遍历里面的元素。我们将在下一节对迭代器和迭代对象作详细说明。

    一个简单的 for 循环

    我们先从一个简单 for 循环开始,它遍历一个字符串列表并打印每一个字符串。

    如你所见,这个循环实际上遍历了列表中的每一个单词并打印它们。也就是说,在循环的每一次遍历中,变量 <i>word</i> 都被指定为列表中的一个元素,然后执行 for 语句中的代码块。由于列表是一个有序的元素序列,所以循环也是以相同的顺序遍历这些元素。

    带有 else 子句的 for 循环

    Python 中的 for 循环可以选择是否关联一个 else 子句。else 子句中的代码块是在 for 循环完成后才开始执行的,即在迭代对象中的所有元素都遍历完毕之后。现在我们看一下如何扩展前面的示例以包含一个 else 条件(子句)。

    else 子句适用于何时?

    你已经注意到,else 子句是在 for 循环完成之后才执行的。那么 else 代码块的意义是什么呢?for 循环之后的语句不是也是同样会执行吗?

    我们很多时候会遇到这样一种情况,当满足某种条件时,中途结束 for 循环。且如果这个条件一直未满足,则希望执行另一组语句。我们通常使用布尔类型的标记实现,下面是一个例子。

    调用结果:

    而用 else 代码块的话,我们可以避免使用布尔类型的标记found_item。我们看看如何使用 else 子句重写上面的方法。注意如果 for 循环中的 break 语句被触发执行,那么则会跳过 else 块。

    所以 else 代码块适用于 for 循环中有 break 语句的情况,且我们希望 break 条件没有被触发的时候执行一些语句。

    否则,与 else 关联的语句只会在 for 循环结束时才执行。本文的最后一节查看反编译的字节码时你会看到这一点。

    for 循环语法

    我们已经看到了一些简单的例子,接下来以 for 循环的语法结束本节。

    基本上,对于 iterable 中的每一个元素,都会执行 set_of_statements_1。一旦所有的元素都迭代一遍,控制器将跳转到 else 代码块中执行 set_of_statements_2。

    注意,else 子句是可选的。如果没有发现 else 子句,循环会在所有元素都遍历完成后结束,并且控制器会转向程序之后的语句。

    可迭代对象与迭代器

    可迭代对象

    在上一节,我们使用术语 iterable 来表示循环中被迭代的对象。现在我们来试着了解一下 Python 中的 iterable 对象是什么。

    Python 中,一个 iterable 对象指在 for 循环中可以被迭代的任意对象。这意味着,当这个对象作为参数传递给 iter()方法时应该返回一个迭代器。我们来看一下 Python 中的一些常用的内置迭代的例子。

    如你所见,当我们对一个 iterable 对象调用 iter() 时,它会返回一个迭代器对象。

    迭代器

    那么什么是迭代器呢?迭代器在 Python 中被定义为一个表现为流式数据的对象。基本上,如果我们将对象传递给内置的next() 方法,它应该从与之关联的流式数据中返回下一个值。一旦所有的元素都遍历结束,它会抛出一个*StopIteration* 异常。next()方法的后续调用也都会抛出*StopIteration* 异常。

    我们用一个列表来试一下。

    迭代器也是可迭代对象!但是...

    有一个很有趣的事需要记一下,迭代器同样支持(强制要求支持迭代器协议iter() 方法。这意味着我们可以对一个迭代器调用iter() 方法并获取它自身的迭代器对象。

    因此,我们可以在任何期望使用迭代器的地方使用它。比如,for 循环。

    然而要注意一点,在像 list 这样的容器对象上调用 iter() 每次都会返回不同的迭代器,而在迭代器上调用 iter() 仅仅返回同一个迭代器。

    所以如果你需要进行多次迭代,并且用迭代器替换普通容器或可迭代对象,那么第二次你会看到一个空的容器。

    对一个列表迭代两次

    请注意,这是按照我们的期望运行的。

    对一个列表迭代器迭代两次

    请注意,迭代器在第一次循环的时候就已经结束了,第二次我们看到的是一个空容器。

    迭代器协议

    前文我们看到了:

    1. 一个可迭代对象,作为参数传递给 iter() 方法时返回一个迭代器。

    2. 一个迭代器,

    1. 作为参数传递给next()方法时返回它的下一个元素或者在所有元素都遍历结束时抛  出StopIteration 异常。

    2. 作为参数传递给iter() 方法时返回它自身。

    迭代协议仅仅只是一种将对象定义为迭代器的标准方式。我们已经在前一节看到了这种协议的实际应用。根据协议,迭代器应该定义以下两个方法:

    1. __next__()

       1. 每次调用这个方法时,应该返回迭代器的下一个元素。一旦元素都遍历结束,它应该抛出StopIteration 异常。

    2. 当我们调动内置函数next() 时,实际内部调用的是本方法。

    2. __iter__()

        1. 这个方法返回迭代器自身

    2. 当我们调动内置函数iter() 时,实际内部调用的是本方法。

    自己写一个迭代器

    现在我们已经知道迭代协议的原理,可以写一个自己的迭代器了。我们先看一个例子,下面我们创建了一个根据给定范围和步长的 Range 类。

    我们看一下它在 for 循环中是怎么工作的。

    注意,Range 类的实例是迭代器也是可迭代对象。

    自己写一个可迭代对象

    我们还可以基于 Range 迭代器另外创建一个可迭代对象。它的作用是每当调用 __iter()__ 方法是返回一个新的迭代器,在这里,它应该返回一个新的 Range 对象。

    在 for 循环中使用我们这个 RangeIterable。

    for 循环工作原理

    现在我们已经知道什么是迭代器和可迭代对象,接下来了解一下 for 循环是如何工作的。

    再看一下前面的例子。

    当我们执行上面的代码块时,发生了以下这些事情:

    1. 在 for 语句内部对列表 ["You", "are", "awesome!"] 调用了 iter() 方法,返回结果是一个迭代器。

    2. 然后对迭代器调用 next() 方法,并将其返回值赋给变量 word。

    3. 之后,会执行 for 循环中关联的语句块。这个例子中是打印 word。

    4. 在 next() 方法抛出 StopIteration 之前会一直重复执行第 2,3 步。

    5. 一旦 next() 抛出 StopIteration,控制器会跳转到 else 子句(如果存在)并执行与 else 关联的语句块。

    注意:如果在步骤 3 中,for 循环语句遇到了 break 语句,则跳过 else 代码块。

    使用 while 语句实现 for 循环逻辑

    我们可以像下面这样使用 while 语句实现之前的逻辑。

    while 循环的行为实际上与 for 循环相同,上面的代码会有以下输出。

    反编译 for 循环

    在本节,我们将反编译 for 循环并逐步说明解释器在执行 for 循环时的指令。这里使用dis 模块来反编译 for 循环。详细来说,就是我们将使用 dis.dis 方法来生成可读性更高的字节码。

    我们会使用之前一直用的简单 for 循环示例。接下来将文件写入文件 for_loop.py。

    我们可以调用 dis.dis 方法获得可读性高的字节码。在终端上运行以下命令。

    更多Python视频、资料、代码加群531509025免费获取

    反编译输出的每列表示以下内容:

    1.  第 1 列:代码行数。

    2. 第 2 列:如果是跳转指令,则有 ">>" 符号。

    3. 第 3 列:以字节为单位的字节码偏移量。

    4. 第 4 列:字节码指令本身。

    5. 第 5 列:展示指令的参数。如果括号中有内容,它只是对参数做了更好的可读性转化。

    现在我们来一步步浏览反编译后的字节码,并尝试了解实际发生了什么。

    1. 第 1 行,即,"for word in [“You”, “are”, “awesome!”]:" 转译为:

    0 SETUP_LOOP 28 (to 30)

    该语句将 for 循环中的代码块推送到栈中。这段代码块会跨越 28 个字节,达到 "30"。

    这意味着,如果 for 循环中有 break 语句,那么控制器将跳转到偏移位置 "30"。注意当遇到 break 语句时是如何跳过 else 代码块的。

    2 LOAD_CONST 0 ((‘You’, ‘are’, ‘awesome!’))

    接下来,列表被推送到栈顶(TOS,之后使用 TOS 表示栈顶或栈顶元素)。

    4 GET_ITER

    该指令实现 "TOS = iter(TOS)"。这表示从列表获取一个迭代器(当前为 TOS),然后将迭代器推送给 TOS。

    6 FOR_ITER 12 (to 20)

    该指令获取 TOS,作为当前的迭代器, 并调用 next() 方法。

    如果 next() 方法产生一个值,则将其作为 TOS 推送到栈,并执行吓一跳指令 "8 STORE_NAME"。

    一旦 next() 表明迭代器已经遍历结束(即抛出 StopIteration 异常),TOS(迭代器)将从栈中弹出,字节码计数器会增加 12。这表示控制器跳转到指令 "20 POP_BLOCK"。

    8 STORE_NAME 0 (word)

    这个指令执行了转换 word = TOS,即,next()返回的值被赋给变量word

    2. 第 1 行,即,"print(word)" 转译为:

    10 LOAD_NAME 1 (print)

    将可调用方法print 推送到栈中。

    12 LOAD_NAME 0 (word)

    将栈中的word作为参数推送给print

    14 CALL_FUNCTION 1

    调用带位置参数的函数。

    像我们看到的指令那样,与函数关联的参数会出现在 TOS 中。在获得可调用象的对(如print)之前,会弹出所有遇到的参数。

    一旦获得可调用对象,则把所有参数传递给它并调用。

    可调用对象执行结束后,把返回值推送到 TOS 中,这里是 None。

    16 POP_TOP

    TOS(栈顶元素),即将函数的返回值从栈中移除(弹出)。

    18 JUMP_ABSOLUTE 6

    此时字节码计数器为 “6”,这表示下一条指令将执行 "6 FOR_ITER"。这是循环遍历迭代器中元素的方式。

    注意,一旦迭代器中的元素都遍历结束,指令 "6 FOR_ITER" 会结束循环并跳转到 "20 POP_BLOCK"。

    20 POP_BLOCK

    POP_BLOCK 会从代码块的栈中移除由 “0 SETUP_LOOP” 设置的代码块。

    3. 注意第 3 行(对应else),没有关联任何特殊指令。程序控制器会顺序执行下一条与else 相关的指令。

    4. 第 4 行,即,"print("See you later!")" 转译为:

    22 LOAD_NAME 1 (print)

    推送与print 相关的可调用方法到栈中。

    24 LOAD_CONST 1 ('See you later!')

    推送可调用函数的参数对象到栈中。

    26 CALL_FUNCTION 1

    可调用函数及其参数会从栈中弹出,然后执行函数并将其返回值推送到 TOS。

    28 POP_TOP

    TOS(栈顶元素),即将函数返回值(这里是 None)从栈中移除。

    5. 下面的两个指令只是简单的将脚本的返回值(None)加载到栈并返回。

    30 LOAD_CONST 2 (None)

    32 RETURN_VALUE

    喔!现在我们已经了解了 for 循环反编译后的指令。希望这有助于更好地理解 for 循环的工作原理。

    结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

    基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
     

    【Python教程】全网最容易听懂的1000集python系统学习教程(答疑在最后四期,满满干货)

    爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
     

    2021年Python最新最全100个爬虫完整案例教程,数据分析,数据可视化,记得收藏哦

    展开全文
  • 10张动图学会python循环与递归

    万次阅读 多人点赞 2020-12-19 08:43:00
    图像(包括动图)是传递信息的一种高效方式,往往能增强表象、记忆与思维等方面的反应强度。所谓一图胜千言,说的就是这个道理。今天为大家整理了十张动图GIFS,有助于认识循环、递归、二分检索等...
  • Springboot循环依赖如何解决

    万次阅读 多人点赞 2019-03-26 13:59:52
    1. 循环依赖是什么? Bean A 依赖 B,Bean B 依赖 A这种情况下出现循环依赖。 Bean A → Bean B → Bean A 更复杂的间接依赖造成的循环依赖如下。 Bean A → Bean B → Bean C → Bean D → Bean E → Bean A 2. ...
  • Android实现可轮播循环和手动滑动循环的广告界面

    千次下载 热门讨论 2015-05-08 12:59:40
    Android实现可轮播循环和手动滑动循环的广告界面 源码下载 经常会看到有一些app的banner界面可以实现循环播放多个广告图片和手动滑动循环。本以为单纯的ViewPager就可以实现这些功能。但是蛋疼的事情来了,ViewPager...
  • For循环执行顺序流程

    万次阅读 多人点赞 2018-05-07 15:06:15
    有以下for循环执行代码较为基础,所以画图给大家讲解一下for循环执行步骤1.执行for循环体里的第一个参数,也就是定义一个int整形变量,其变量名为i,并初始化为02.执行完第一个参数里的代码后,会执行第二个参数,...
  • for循环

    万次阅读 多人点赞 2021-01-19 20:01:20
    今天我们来聊聊for循环, for(条件一;条件二;条件三){ //循环体 } 这就是for循环的构造 条件一:var 一个值 条件二:进入循环的判断条件 条件三:var 的值每一次循环完后,是否递增或递减 循环体:就是你输入所要循环...
  • 循环结构 循环必须要有某些固定的内容组成 初始化 i=0 条件判断 i<10 要执行的代码 自身改变 i WHILE 循环 while`,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了 语法 while ...
  • 若在for循环中,还会执行下一次循环吗?】 return的用法是什么,若在for循环中,还会执行下一次循环吗? 一、背景介绍 什么是return? return 语句的作用是从当前函数退出,并从那个函数返回一个值。 用 ...
  • python 实现CRC(循环冗余)校验

    万次阅读 2020-09-01 19:45:07
    循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为...
  • 循环移位:循环左移和循环右移

    万次阅读 多人点赞 2018-04-30 15:35:46
    换句话说,循环移位就是将移出的低位放到该数的高位(循环右移)或把移出的高位放到该数的低位(循环左移),左移,和右移动都是对整数进行的操作,在Win32控制台应用程序中,整形占4Byte节32bit。 &nbsp; &...
  • Java中的增强型for循环

    万次阅读 多人点赞 2018-07-27 00:52:14
    增强型for循环定义如下: for(ElementType element: arrayName){}; 上述for循环可被读为:for each element in arrayName do {...} ------------------------------------------------------------------------...
  • python循环之for循环

    万次阅读 多人点赞 2018-10-16 14:39:38
    python还有个循环是for循环。 for循环一般用于遍历元组、集合、列表这种数据类型里面的所有元素。(字典只会遍历索引) #简单的for循环结构(不同于while循环容易变成无限循环,for循环遍历完或中止便会结束运行...
  • Java中for循环嵌套的内循环和外循环

    万次阅读 多人点赞 2018-08-05 15:14:25
     首先内层循环属于外层循环循环体的一部分,当循环体执行完以后外层循环才进入第二次循环,此过程中内层循环需要执行符合条件的完整循环。(外循环控制行数,内循环控制每一行的个数) 下面以冒泡排序为例说明: ...
  • C语言while循环语句 do while语句 for循环语句

    万次阅读 多人点赞 2019-06-10 14:17:53
    一、循环结构的思想及意义: 知道了循环结构,那么在生活中也一样,我们每天都在重复做着相同的事情,例如:吸气呼气的过程;又如夏天开电扇,电扇一圈一圈的转,这都是在重复。现在大家玩个游戏,一个人A来说一个人...
  • for 循环,jQuery循环遍历详解

    万次阅读 多人点赞 2018-08-20 21:24:44
    1.for 循环 原生JS最基本的使用: for (var i=0;i&lt;cars.length;i++) { ..... } for - 循环代码块一定的次数 2.for in for/in - 循环遍历对象的属性 以任意顺序遍历一个对象的可枚举属性。对于每个...
  • for循环嵌套的两种用法

    万次阅读 多人点赞 2016-10-29 19:09:20
    主要有两种类型的for循环嵌套,下面来介绍这两种类型循环嵌套的用法以及事例。 一:内外循环独立进行 #include void main() { int i,j; char a[5]="$$$$$"; for(i=0;i;i++) { for(j=0;j;j++) ...
  • Mysql 循环插入10000条数据

    万次阅读 2018-02-05 00:17:40
    前言:因为项目用user和data两张表,把user中的部分字段拆分到data中,这样两表都要通过user_id关联起来...1、所以,按自己想法,写个循环1W次随便插入数据测试 DROP PROCEDURE IF EXISTS proc_initData;--如果...
  • C语言for循环

    万次阅读 多人点赞 2020-04-16 11:04:54
    1、for循环介绍 for循环的一般形式为: for (语句1;表达式;语句2) { 语句块 } 1)for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1。 2)接着判断表达式的条件,如果条件成立,就执行一次...
  • for循环,while循环,break跳出循环

    千次阅读 2018-01-23 01:57:14
    for循环,while循环,break跳出循环
  • Spring-bean的循环依赖以及解决方式

    万次阅读 多人点赞 2017-09-12 08:18:21
    本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。 什么是循环依赖? 怎么检测循环依赖 Spring怎么解决循环依赖 Spring对于循环依赖无法...
  • 新手小白学JAVA 嵌套for循环 while do-while

    万次阅读 多人点赞 2021-04-01 23:14:02
    1 嵌套for循环 1.1 概述 存在至少2层for循环,根据外层的条件,判断里层能否执行 如果能执行,就把里层代码都循环完毕后,再继续判断是否执行外层循环的下一次循环 1.2 嵌套for形式 1.3 练习:嵌套for循环入门案例 ...
  • for循环、while循环和do-while循环

    千次阅读 2018-09-19 17:06:06
    什么是循环循环:同一个代码根据情况要一直执行。 循环的意义:大大减少代码量, 极大意义上的提升硬件利用率 什么时候使用循环? 1.重复并且有规律 —&amp;gt;逻辑能力 2.开始条件 —&amp;gt;从...
  • js 循环

    千次阅读 2020-10-26 15:24:44
    for循环: 首先我们的for循环单个就是我们将内容全部输出出来执行的条件 1.首先声明初始值 2.设置条件 3.执行代码块 4.执行i++ 格式为: var cons = ""; for (var i = 0; i < 10; i++) {//我们的循环这里...
  • while循环 while循环 do-while循环
  • JS中的几种循环和跳出方式

    万次阅读 2018-09-27 11:34:03
    JS中的循环是大家很常用的,这里总结一下几种常用循环的跳出方式。 1.for循环 var arr = ['q','w','e','r','t']; for(var i=0, len = arr.length ; i< len ; i++){ console.log(arr[i]); } // q , w , e , ...
  • Java里面for循环的几种用法

    万次阅读 多人点赞 2018-03-23 13:17:59
    j2se 1.5开始提供了另一种形式的for循环。方法一:遍历数组的传统方法//建立一个数组 int[] integers={1,2,3,4}; //开始遍历 for(int j=0;j&lt;integers.length;j++){ int i=integers[j]; System.out.println(i)...
  • Java循环语句常见练习 for循环、while循环、do-while循环的应用 循环语句出现初衷:简化代码的书写。 一般情况下,循环结构应该有四个部分: 初始化语句; 条件表达式; 循环体; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,754,088
精华内容 1,501,635
关键字:

循环