目录

1:数组的定义和创建方式

2:数组的总结

3:for循环遍历数组

4:数组的案例

5:冒泡排序

6:函数的定义

7:函数的参数

8:函数的返回值

复习

  1. <script>
  2.  
  3. /*
  4. *
  5. * break:在循环中遇到这个关键字,直接跳出当前所在的循环
  6. * continue:在循环中遇到这个关键字,直接进行下一次循环
  7. * 数组:存储一组有序的数据,数据类型可以不一样
  8. * 数组的作用:一次性存储多个数据
  9. * 数组元素:数组中存储的每个数据,叫数组元素,存储了5个数据,有5个数组元素
  10. * 数组的长度:数组的元素的个数,叫数组的长度:数组名.length--->就是长度,数组的长度是可以改变的
  11. * 索引(下标):存储数组元素的编号,从0开始,到数组的长度-1结束
  12. * 索引是用来存储和读取数组元素的
  13. * 遍历数组:通过循环的方式找到数组中的每个数据
  14. * 冒泡排序:
  15. * 求数组的和,最大值,最小值,平均值
  16. *
  17. * 数组定义的方式:
  18. * 1. 通过构造函数定义数组
  19. * var 数组名=new Array();空数组 Array()就是构造函数
  20. * var 数组名=new Array(长度);是设置数组的初始的长度,长度是可以改变的
  21. * var 数组名=new Array(值,值,值...);定义数组并设置数组中的元素值
  22. * 2. 字面量的方式定义数组
  23. * var 数组名=[];空数组
  24. * var 数组名=[10];这个数组有一个元素,值是10,长度是1
  25. * 数组变量
  26. * for(var i=0;i<数组名.length;i++){
  27. *
  28. * }
  29. *
  30. *
  31. * 函数:把一些重复的代码封装起来,在需要的时候直接调用这个函数就可以了
  32. * 函数作用:代码的重用
  33. * 函数定义:
  34. * function 函数名(){
  35. * 函数体
  36. * }
  37. * 函数调用:
  38. * 函数名();
  39. *
  40. * 参数:形参和实参
  41. * 形参:函数定义的时候函数名字后面的小括号里的变量就是参数,是不需要写var
  42. * 实参:函数调用的时候小括号里传入的变量或者是值,都是实参
  43. * 返回值:函数中如果有return,那么这个函数就有返回值
  44. * 如果函数中没有return,那么这个函数没有返回值
  45. * 如果函数中有return,但是后面什么内容都没有,这个函数没有明确返回值
  46. * 如果一个函数没有明确的返回值,函数调用了,并且接收了,那么此时接收的结果undefined
  47. * 如果直接输出函数名字,那么是这个函数的代码
  48. * 无参数无返回值的函数
  49. * function f1(){
  50. *
  51. * }
  52. * 有参数无返回值的函数,2个参数
  53. * function f2(x,y){
  54. *
  55. * }
  56. * 无参数有返回值的函数
  57. * function f3(){
  58. * return 100;
  59. * }
  60. * 有参数有返回值的函数
  61. * function f4(x){
  62. * return "您好";
  63. * }
  64. *
  65. *
  66. *
  67. *
  68. * */
  69.  
  70. var arr = [1, 5, 10, 3, 100, 20];
  71. //循环控制比较的轮数
  72. for (var i = 0; i < arr.length - 1; i++) {
  73. //此时只是比较了一次---如果想要比较多次--for循环
  74. for (var j = 0; j < arr.length - 1 - i; j++) {
  75. if (arr[j] < arr[j + 1]) {
  76. var temp = arr[j];
  77. arr[j] = arr[j + 1];
  78. arr[j + 1] = temp;
  79. }
  80. }
  81. }
  82. console.log(arr);
  83.  
  84. </script>
  85. <script>
  86. // //隐式全局变量
  87. // for( i=0;i<10;i++){
  88. // console.log("今天天气真好");
  89. // }
  90. </script>

1:数组的定义,创建方式

  1. <script>
  2.  
  3. //数组:一组有序的数据
  4. //数组的作用:可以一次性存储多个数据
  5. //数组的定义:
  6. /*
  7. *
  8. * 1. 通过构造函数创建数组
  9. * 语法:
  10. * var 数组名=new Array();
  11. * var array=new Array();//定义了一个数组
  12. * 数组的名字如果直接输出,那么直接就可以把数组中的数据显示出来,如果没有数据,就看不到数据
  13. *
  14. * var 数组名=new Array(长度);
  15. * 如果数组中没有数据,但是有长度---,数组中的每个值就是undefined
  16. * 构造函数的方式创建数组的时候,如果在Array(一个数字)--->数组的长度(数组元素的个数)
  17. * 如果在Array(多个值);这个数组中就有数据了,数组的长度就是这些数据的个数
  18. *
  19. *
  20. * 2. 通过字面量的方式创建数组
  21. *
  22. * var 数组名=[];//空数组
  23. * var array=[];
  24. *
  25. *
  26. * 无论是构造函数的方式还是字面量的方式,定义的数组,如果有长度,那么默认是undefined
  27. *
  28. * 3: 数组:一组有序的数据
  29. * 数组元素:数组中存储的每个数据,都可以叫数组的元素,比如:存储了3个数据,数组中3个元素
  30. * 数组长度:就是数组的元素的个数,比如有3个元素,就说,这个数组的长度是3
  31. * 数组索引(下标):用来存储或者访问数组中的数据的,索引从0开始,到长度减1结束
  32. * 数组的索引和数组的长度的关系:长度减1就是最大的索引值
  33. *
  34. * 4: 如何设置数组中某个位置的值
  35. * 数组名[下标]=值;
  36. * arr[3]=100;
  37. *
  38. * 5:如何获取数组中某个位置的值
  39. * var result=数组名[下标];
  40. * console.log(result);
  41. * */
  42.  
  43. //通过构造函数的方式定义一个数组
  44. // var array=new Array(5);//没有数据,空数组
  45. // console.log(array);
  46. //alert(array);
  47.  
  48. //就是一个数组---->字面量的方式
  49. // var arr=[];
  50. // console.log(arr);
  51.  
  52. // var arr1=new Array();//构造函数的方式---空数组
  53. // var arr2=new Array(5);//构造函数的方式定义了一个数组,数组中有5个元素,数组长度是5,每个数据是undefined
  54. //
  55. // var arr3=new Array(10,20,1000,40,50,60);
  56. // console.log(arr3);
  57.  
  58. // var arr=new Array(10,20,30,40,100);
  59. // //console.log(arr[4]);//获取
  60. // //设置
  61. // arr[3]=1000;
  62. // console.log(arr);
  63.  
  64. //字面量的方式更简单
  65.  
  66. // var arr=[10,20,30,40,50,60,70,80,10,20,3043,5];//空数组
  67. // console.log(arr.length);
  68.  
  69. </script>

2:数组的总结

  1. <script>
  2. /*
  3. *
  4. * 数组:存储一组有序的数据
  5. * 数组的作用:一次性存储多个数据
  6. * 数组的定义方式:
  7. * 1.构造函数定义数组: var 数组名=new Array();
  8. * 2.字面量方式定义数组: var 数组名=[];
  9. *
  10. * var 数组名=new Array();空数组
  11. * var 数组名=new Array(值);数组定义了,有长度
  12. * var 数组名=new Array(值1,值2,值3....);定义数组并且有多个数据
  13. * var 数组名=[];空数组
  14. * var 数组名=[值1,值2,值3];有三个数据
  15. * 数组元素:就是数组中存储的数据
  16. * 数组长度:就是数组中元素的个数
  17. * 数组索引(下标):从0开始,到数组的长度减1结束
  18. * 通过下标设置数组的元素值: 数组名[索引]=值
  19. * 通过下标访问数组的元素值: 数组名[索引]
  20. *
  21. *
  22. *
  23. *
  24. * */
  25.  
  26. var arr1=new Array();//空数组
  27. var arr2=new Array(5);//长度为5的数组,每个数据的值是undefined
  28. var arr3=new Array(1,2,3,4,5);//长度为5分数组,
  29. var arr4=[];//空数组
  30. var arr5=[1,2,3];//长度为3的数组
  31. var arr6=["red","blue","green",1,true];//数组中元素的值的类型可以不一样
  32.  
  33. var arr7=[];
  34. //设置数组的元素的值
  35. arr7[0]=10;
  36. arr7[1]=20;
  37.  
  38. </script>

3:for循环遍历数组

  1. <script>
  2. // var arr=[10,20,30,40,50];
  3. // //显示数组中的每个数据
  4. // console.log(arr[0]);
  5. // console.log(arr[1]);
  6. // console.log(arr[2]);
  7. // console.log(arr[3]);
  8. // console.log(arr[4]);
  9. //console.log(arr[5]);//没有数据
  10.  
  11. var arr=[10,20,30,40,50,60,70,80,90,100];
  12. //小于的是数组的长度--个数
  13. for(var i=0;i<arr.length;i++){
  14. console.log(arr[i]);
  15. }
  16. </script>

4:数组的案例

  1. <script>
  2.  
  3. //案例1:求数组中所有元素的和
  4.  
  5. var arr1 = [10, 20, 30, 40, 50];
  6. var sum = 0;
  7. for (var i = 0; i < arr1.length; i++) {
  8. sum += arr1[i];
  9. }
  10. console.log(sum);
  11.  
  12. //案例2:求数组中所有元素的平均值
  13.  
  14. var arr2 = [1, 2, 3, 4, 5];
  15. var sum2 = 0;
  16. for (var i = 0; i < arr2.length; i++) {
  17. sum2 += arr2[i];
  18. }
  19. console.log(sum2 / arr2.length);
  20.  
  21. //案例3:求数组中所有元素中的最大值
  22.  
  23. var arr3 = [1, 3, 2, 5, 10, 100, 50];
  24. //假设max变量中存储的是最大值
  25. var max = arr3[0];
  26. for (var i = 0; i < arr3.length; i++) {
  27. //判断这个变量的值和数组中每个元素的值是不是最大值
  28. if (max < arr3[i]) {
  29. max = arr3[i];
  30. }
  31. }
  32. console.log("最大值:" + max);
  33.  
  34. //一个不好的地方----会出现bug的
  35. // var arr3=[-1,-2,-3];
  36. // //假设max变量中存储的是最大值
  37. // var max=0;
  38. // for(var i=0;i<arr3.length;i++){
  39. // //判断这个变量的值和数组中每个元素的值是不是最大值
  40. // if(max<arr3[i]){
  41. // max=arr3[i];
  42. // }
  43. // }
  44. // console.log("最大值:"+max);
  45.  
  46. // var arr3=[1,3,2,5,10,100,50];
  47. // //假设max变量中存储的是最大值
  48. // var max=Number.MIN_VALUE;//假设变量是最大的,但是实际上存储的是最小的值
  49. // for(var i=0;i<arr3.length;i++){
  50. // //判断这个变量的值和数组中每个元素的值是不是最大值
  51. // if(max<arr3[i]){
  52. // max=arr3[i];
  53. // }
  54. // }
  55. // console.log("最大值:"+max);
  56.  
  57. //案例4:求数组中所有元素的最小值
  58. var arr4 = [100, 10, 20, 30, 40, 50];
  59. var min = arr4[0];//假设min里存储的就是最小值
  60. for (var i = 0; i < arr4.length; i++) {
  61. if (min > arr4[i]) {
  62. min = arr4[i];
  63. }
  64. }
  65. console.log("最小值:" + min);
  66.  
  67. //案例5:倒序遍历数组
  68.  
  69. var arr5 = [10, 20, 30, 40, 50, 100];
  70. //正序
  71. // for (var i = 0; i < arr5.length; i++) {
  72. // console.log(arr5[i]);
  73. // }
  74. //倒序
  75. for(var i=arr5.length-1;i>=0;i--){
  76. console.log(arr5[i]);
  77. }
  78.  
  79. </script>

5:冒泡排序

  1. <script>
  2.  
  3. //案例6:把数组中每个元素用|拼接到一起产生一个字符串并输出
  4.  
  5. // var names=["卡卡西","佐助","鸣人","大蛇丸","雏田","小苏","凤姐","黑崎一护"];
  6. // var str="";//空的字符串
  7. // for(var i=0;i<names.length-1;i++){
  8. // str+=names[i]+"|";
  9. // }
  10. //
  11. // console.log(str+names[names.length-1]);
  12.  
  13. // var names=["卡卡西","佐助","鸣人","大蛇丸","雏田","小苏","凤姐","黑崎一护"];
  14. // var str="";//空的字符串
  15. // for(var i=1;i<names.length;i++){
  16. // str+="|"+names[i];
  17. // }
  18. //
  19. // console.log(names[0]+str);
  20.  
  21. //案例7:去掉数组中重复的0,把其他的数据放在一个新的数组中
  22.  
  23. // var arr = [10, 0, 20, 0, 30, 0, 50];
  24. // var newArr=[];//新数组,用来存放第一个数组中所有非0的数字
  25. // for(var i=0;i<arr.length;i++){
  26. // if(arr[i]!=0){
  27. // newArr[newArr.length]=arr[i];
  28. // }
  29. // }
  30. // //把新数组的长度作为下标使用,数组的长度是可以改变的
  31. // console.log(newArr);
  32.  
  33. //案例8:反转数组---把数组中的数据的位置调换
  34. // var array = [10, 20, 30, 40, 50];
  35. // //循环的目的是控制交换的次数
  36. // for (var i = 0; i < array.length / 2; i++) {
  37. // //先把第一个元素的值放在第三方变量中
  38. // var temp = array[i];
  39. // array[i] = array[array.length - 1 - i];
  40. // array[array.length - 1 - i] = temp;
  41. // }
  42. // console.log(array);
  43.  
  44. // for(var i=array.length-1;i>=0;i--){
  45. // console.log(array[i]);
  46. // }
  47. //console.log(array);//50 40 30 20 10
  48.  
  49. //案例9:提示用户输入班级人数,求总成绩,平均值,最高分,最低分---扩展
  50.  
  51. //提示用户输入人数,并转成数字类型
  52. var perCount = parseInt(prompt("请输入班级人数"));
  53. //定义数组存储班级的每个人的成绩
  54. var perScores = [];
  55. //循环的方式录入每个人的成绩
  56. for (var i = 0; i < perCount; i++) {
  57. //把每个人的成绩存储到数组中
  58. perScores[perScores.length] = parseInt(prompt("请输入第" + (i + 1) + "个人的成绩:"));
  59. }
  60. console.log(perScores);
  61. //求总成绩
  62. var sum = 0;
  63. var avg = 0;//平均值
  64. var max=perScores[0];//最大值
  65. var min=perScores[0];//最小值
  66. for (var i = 0; i < perScores.length; i++) {
  67. sum += perScores[i];//求和
  68. //求最大值
  69. if(max<perScores[i]){
  70. max=perScores[i];
  71. }
  72. //求最小值
  73. if(min>perScores[i]){
  74. min=perScores[i];
  75. }
  76. }
  77. //平均值
  78. avg = sum / perScores.length;
  79. console.log("和为:"+sum);
  80. console.log("平均值:"+avg);
  81. console.log("最大值:"+max);
  82. console.log("最小值:"+min);
  83.  
  84. //案例10: 冒泡排序
  85.  
  86. </script>
  1. <script>
  2.  
  3. //冒泡排序:把所有的数据按照一定的顺序进行排列(从小到大,从大到下)
  4.  
  5. var arr = [10, 0, 100, 20, 60, 30];
  6. //循环控制比较的轮数
  7. for (var i = 0; i < arr.length - 1; i++) {
  8. //控制每一轮的比较的次数
  9. for (var j = 0; j < arr.length - 1 - i; j++) {
  10. if (arr[j] < arr[j + 1]) {
  11. var temp = arr[j];
  12. arr[j] = arr[j + 1];
  13. arr[j + 1] = temp;
  14. }
  15. }
  16. }
  17. console.log(arr);
  18. </script>

6:函数的定义

//函数:把一坨重复的代码封装,在需要的时候直接调用即可
    //函数的作用:代码的重用
    /*
    *
    * 函数的定义
    * 语法:
    *
    * function 函数名字(){
    *   函数体-----一坨重复的代码
    * }
    *
    * 函数的调用:
    *
    * 函数名();
    *
    *
    *
    * */
 

7:函数的参数

  1. <script>
  2. /*
  3. * 函数参数:
  4. * 在函数定义的时候,函数名字后面的小括号里的变量就是参数,目的是函数在调用的时候,用户传进来的值操作
  5. * 此时函数定义的时候后面的小括号里的变量叫参数;写了两个变量,就有两个参数,
  6. * 在函数调用的时候,按照提示的方式,给变量赋值--->就叫传值,把这个值就传到了变量(参数)中
  7. *
  8. * 形参:函数在定义的时候小括号里的变量叫形参
  9. * 实参:函数在调用的时候小括号里传入的值叫实参,实参可以是变量也可以是值
  10. *
  11. *
  12. * */
  13.  
  14. //函数定义
  15. function consoleSum(x, y) {
  16. var sum = x + y;//计算和----功能
  17. console.log(sum);//输出和---第二个功能
  18. }
  19. // //函数调用
  20. // var num1=parseInt(prompt("输入第一个数字"));
  21. // var num2=parseInt(prompt("输入第二个数字"));
  22. // consoleSum(num1, num2);
  23.  
  24. // function f1(x) {
  25. // console.log(x);
  26. // }
  27. // function f2(x,y) {
  28. //
  29. // }
  30. // function f3(x,y,z) {
  31. //
  32. // }
  33. // function f4(x,y,z,k) {
  34. //
  35. // }
  36. </script>

8:函数的返回值

  1. <script>
  2. //set:设置
  3. //get:获取
  4. //函数的返回值:在函数内部有return关键字,并且在关键字后面有内容,这个内容被返回了
  5. //当函数调用之后,需要这个返回值,那么就定义变量接收,即可
  6.  
  7. /*
  8. *
  9. * 如果一个函数中有return ,那么这个函数就有返回值
  10. * 如果一个函数中没有return,那么这个函数就没有返回值
  11. * 如果一个函数中没有明确的返回值,那么调用的时候接收了,结果就是undefined
  12. * (没有明确返回值:函数中没有return,函数中有return,但是return后面没有任何内容)
  13. * 函数没有返回值,但是在调用的时候接收了,那么结果就是undefined
  14. * 变量声明了,没有赋值,结果也是undefined
  15. * 如果一个函数有参数,有参数的函数
  16. * 如果一个函数没有参数,没有参数的函数
  17. * 形参的个数和实参的个数可以不一致
  18. * return 下面的代码是不会执行的
  19. *
  20. *
  21. *
  22. * */
  23.  
  24. function f1(x,y) {
  25. var sum= x+y;
  26. return sum;
  27. console.log("助教才是最帅的");
  28. return 100;
  29. }
  30. var result=f1(10,20);
  31. console.log(result);
  32.  
  33. // function getSum(x, y) {
  34. // var sum = x + y;
  35. // return sum;//把和返回
  36. //
  37. // }
  38. // //函数调用
  39. // var result=getSum(10, 20);
  40. // console.log(result+10);
  41.  
  42. //函数定义: 有参数有返回值的函数
  43. // function getSum(x, y) {
  44. // return x + y;//把和返回
  45. // }
  46. // //函数调用
  47. // var result=getSum(10, 20);
  48. // console.log(result+10);
  49.  
  50. //有参数,有返回值的函数
  51. // function f1(x,y) {
  52. // return x+y;
  53. // }
  54. // //有参数,无返回值的函数
  55. // function f2(x) {
  56. // console.log(x);
  57. // }
  58. // //无参数,有返回值的函数
  59. // function f3() {
  60. // return 100;
  61. // }
  62. // //无参数无返回值的函数
  63. // function f4() {
  64. // console.log("萨瓦迪卡");
  65. // }
  66. //
  67. //
  68. // var sum=f1(10);
  69. // console.log(sum);//
  70.  
  71. </script>
 

13 (H5*) JS第三天 数组、函数的更多相关文章

  1. None.js 第三步 回调函数【阻塞代码--非阻塞代码】

    阻塞代码实例 var fs = require("fs"); // 导入文件系统 file system var data = fs.readFileSync('input.txt ...

  2. JS三个编码函数和net编码System.Web.HttpUtility.UrlEncode比较

    JS三个编码函数和net编码比较 总结 1.escape.encodeUri.encodeUriComponent均不会对数字.字母进行编码.2.escape:对某些字符(如中文)进行unicode编 ...

  3. 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数

    前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...

  4. js经典试题之数组与函数

    js经典试题之数组与函数 1:列举js的全局函数? 答案:JavaScript 中包含以下 7 个全局函数escape( ).eval( ).isFinite( ).isNaN( ).parseFlo ...

  5. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

  6. 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)

    目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...

  7. JS的二维数组

    今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7 ...

  8. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  9. Vue.js+vue-element搭建属于自己的后台管理模板:更深入了解Vue.js(三)

    前言 上一章我们介绍了关于Vue实例中一些基本用法,但是组件.自定义指令.Render函数这些放到了本章来介绍,原因是它们要比前面讲的要难一些,组件是Vue.js最核心的功能,学习使用组件也是必不可少 ...

随机推荐

  1. MyBatis中批量insert

    在orcale和mybatis执行批量插入是不一样的. orcale如下:(这里要注意的是:useGeneratedKeys="false" ) 方式1:oracle批量插入使用 ...

  2. 图像语义分割出的json文件和原图,用plt绘制图像mask

    1.弱监督 由于公司最近准备开个新项目,用深度学习训练个能够自动标注的模型,但模型要求的训练集比较麻烦,,要先用ffmpeg从视频中截取一段视频,在用opencv抽帧得到图片,所以本人只能先用语义分割 ...

  3. Fokker–Planck equation

    Fokker–Planck equation:https://en.wikipedia.org/wiki/Fokker%E2%80%93Planck_equation 随机微分方程:https://e ...

  4. socket客户端的备份机制

    SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0); //设定服务器的地址信息 SOCKADDR_IN addrSrv; addrSrv.sin_a ...

  5. 通过jenkins给gitlab某代码路径打tag的方式

    1.构建后设置里的git publisher插件 https://blog.csdn.net/workdsz/article/details/77931812 2.通过gitlab api接口来 ht ...

  6. layui table 分页 记住之前勾选的数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. quartz 时间配置

    Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...

  8. nginx图片过滤处理模块http_image_filter_module

    nginx图片过滤处理模块http_image_filter_module安装配置笔记 http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54 ...

  9. SpringBoot整合MyBatis-Plus代码自动生成类

    在springboot的test测试类下创建 MpGenerator.java   配置  MpGenerator.java public class MpGenerator { @Test publ ...

  10. day3 ord,chr,random,string

    day3复习 >>> for i in range(10): ... if i == 3: ... break ... print(i) ... 0 1 2 >>> ...