pythonweb day09

目录

 

1.for 循环

2.函数

3.数组


1.for 循环

  1. 语法:
    for(1.定义循环变量; 2.判断循环条件; 3.更新循环变量){
    
        循环体
    
    }

     

  2. 循环流程

    1. 定义循环变量

    2. 判断循环条件

    3. 条件成立,执行循环体

    4. 更新循环变量

  3. for 循环 与 while 循环的区别

    1. 相同点:执行流程相同

    2. 不同点:
      while 循环常用于不确定循环次数的场合
      for 循环常用于确定循环次数的场合
      练习:
      1-100的所有数,
      1-100所有的和,
      1-100能被3整数的数
       

      <!DOCTYPE html>
      <html>
      <head>
      	<title></title>
      	<meta charset="utf-8">
      	<script type="text/javascript">
      		var s = 0;
      		for (var i= 1; i <= 100; i++){
      			// console.log(i);
      			s += i;
      		}
      		console.log(s);
      		for(var j=1; j<101; j++){
      			if (j % 3 == 0){
      				console.log(j);
      			}
      
      		}
      	</script>
      </head>
      <body>
      
      </body>
      </html>

       

  4. 循环控制

    1. break
      break用在循环体中,表示跳出循环,结束整个循环,并且循环体中break后面的代码都不执行

    2. continue
      continue 用在循环体中,表示跳出本次循环,开始下一次循环

      <!DOCTYPE html>
      <html>
      <head>
      	<title></title>
      	<meta charset="utf-8">
      	<script type="text/javascript">
      		var sum = 0;
      		for(var i = 1;i <= 100;i ++){
      			sum += i;
      			// console.log(i);
      		}
      		console.log(sum);
      
      		//模拟跑十圈
      		for(var j = 1; j <= 10; j ++){
      
      			if (j == 5) {
      				console.log("不能再跑了,要出事");
      				break;
      			}
      			console.log("第"+j+"圈");
      		}
      
      		for(var m = 1;m <= 10; m ++){
      			if (m == 5) {
      				console.log("下场补水,下一圈接着跑");
      				continue;
      			}
      			console.log("第"+m+"圈");
      		}
      	</script>
      </head>
      <body>
      
      </body>
      </html>


      练习:

      1. 判断素数(质数)
        素数:只能被1和本身整除的数字,从弹框随意录入数字,判断是否为素数

        <!DOCTYPE html>
        <html>
        <head>
        	<title></title>
        	<meta charset="utf-8">
        	<script type="text/javascript">
        		var num = Number(prompt("请输入数字"));
        		var isSu = true;
        		// 从2开始到num-1之间不能再有其他数字可以被整除
        		for(var i = 2; i < num;i ++){
        			if (num % i == 0) {
        				isSu = false;
        				break;
        			}
        		}
        		if(isSu){
        			console.log(num+"是素数");
        		}else{
        			console.log(num+"不是素数");
        		}
        
        	</script>
        </head>
        <body>
        
        </body>
        </html>

         

      2. 在弹框中输入年月日,判断星期几,已知:1990年1月1日是星期一
        解决

        1. 接收年月日,切换为Number类型

        2. 计算当前日期与1990年1月1日之间间隔多少天
          年累加 1990 ->year-1
          当前年中月份的累计
          当前月的天数

        3. 总天数 % 7
          0-6代表周日-周六
           

          <!DOCTYPE html>
          <html>
          <head>
          	<title></title>
          	<meta charset="utf-8">
          	<script type="text/javascript">
          		//接收用户输入的年 月 日
          		var year = Number(prompt("请输入年份"));
          		var month = Number(prompt("请输入月份"));
          		var day = Number(prompt("请输入日期"));
          		//总天数
          		var totalDays = 0;
          		// 判断当年是否为闰年
          		var isRun = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
          
          		// 计算天数 年 和 月
          		for(var i = 1990;i < year;i ++){
          			totalDays += 365;
          			if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
          				totalDays += 1;
          			}
          		}
          		// 当前年中月份的累加
          		for(var i = 1; i < month; i ++){
          			switch(i){
          				case 1 :
          				case 3 :
          				case 5 :
          				case 7 :
          				case 8 :
          				case 10:
          					totalDays += 31;
          					break;
          				case 4 :
          				case 6 :
          				case 9 :
          				case 11 :
          					totalDays += 30;
          					break;
          				case 2 :
          					totalDays += 28;
          					if (isRun) {
          						totalDays += 1;
          						break;
          					}
          			}
          
          			//更新循环变量
          		}
          		// 累加当前月的天数
          		totalDays += day;
          		// 计算星期几,只需要总天数对7取余,余数就表示周几
          		var date = totalDays % 7;
          		var show = "";
          		switch(date){
          			case 0 :
          				show = "日";
          				break;
          			case 1 :
          				show = "一";
          				break;
          			case 2 :
          				show = "二";
          				break;
          			case 3 :
          				show = "三";
          				break;
          			case 4 :
          				show = "四" ;
          				break;
          			case 5 :
          				show = "五";
          				break;
          			case 6 :
          				show = "六";
          				break;
          
          		}
          		console.log(year+"年"+month+"月"+day+"日是星期"+show);
          
          
          						
          	</script>
          </head>
          <body>
          
          </body>
          </html>

           

  5. 循环的嵌套
    允许在一个循环中嵌套另一个循环
    语法:

    for(var i = 1; i <= 9; i ++){ //行
        for(var j = 1; j <= 9; j ++){ //列
        }
    }

    练习:

    1. 在控制台输出图案
      *
      **
      ***
      ****
      *****

    2. 在控制台输出图案
          *
         ***
        *****
       *******
      *********
      每行的空格数和星星数
      思路:
      行数 i 共五行
      每行的空格数:
      行数  空格
      1       4
      2       3
      i        5-i
      每行的星星数:
      行数  星星数
      1      1
      2      3
      i       2*i-1
      每一行中,先输出空格,

    3. 控制台输出 99 乘法表
       

      <!DOCTYPE html>
      <html>
      <head>
      	<title></title>
      	<meta charset="utf-8">
      	<script type="text/javascript">
      		// 行数与该行的星星个数相等
      		for(var i = 1; i <= 5; i ++){
      			//由于console.log语句会自动换行,所以定义一个字符串来表示最终显示的内容
      			var showMsg = '';
      			for(var j = 1; j <= i;j ++){
      				showMsg += '*';
      			}
      			console.log(showMsg);
      		}
      
      		console.log("----------------------");
      
      		for(var i = 1; i <= 5; i ++){
      			var show = '';
      			// 空格数
      			for(var j = 1; j <= 5-i; j ++){
      				show += ' ';
      			}
      			// 星星数
      			for(var k = 1; k <= 2*i - 1;k ++){
      				show +="*";
      			}
      
      			console.log(show);
      		}
      		console.log("-------------------------");
      
      		// 第一个操作数
      		for(var i = 1; i <= 9; i ++){
      
      			var show = '';
      			// 第二个操作数
      			for(var j = 1; j <= i; j++){
      				// show += i + "*" + j +'=' + i * j; 
      				show += j + "*" + i +'=' + i * j + "\t";
      			}
      
      			console.log(show);
      
      		}
      	</script>
      </head>
      <body>
      
      </body>
      </html>

       

2.函数

  1. 函数,就是一段待执行的代码块
  2. 作用:
    实现多条语句的封装
    实现代码复用
  3. 函数使用
    1. 函数的声明
    2. 函数的调用
      注意:函数先声明在调用(JS中非强制)
  4. 语法:
    1. 函数声明
      function 函数名(参数列表){
          函数体;
          返回值

      }
      1. JS中函数声明使用function关键字
      2. 函数名自定义,遵照变量命名规范,见名知意
      3. 参数列表,参数表示函数体执行所需要的数据,可以为空,为空时() 不能省略,多个参数之间使用, 隔开
        et:
        function sum (a,b){
             return a + b;
        }
      4. 返回值 使用return 关键字,将函数体内部执行的结果传递给外界使用,只能返回一个值,返回值不需要的话,可以省略return
        et:
        function showFn(){
            console.log('hello');
        }
        注意:return一定要写在函数体的末尾,return关键字后面的代码都不执行 
      5. 匿名函数
        var fn = function(){
            函数体
        };
    2. 函数调用
      语法:
        函数名();
        函数名(10,20);
        var res = 函数名(10,20);
      注意:
      1. 函数参数分为形参和实参,函数声明时,使用形参,函数调用时,传递实参
        形参:代号
        实参:具体的数据
        传参的过程,就是给参数中形参变量赋值的过程
      2. 函数如果有返回值,在调用时,需要定义变量接收返回值
        <!DOCTYPE html>
        <html>
        <head>
        	<title></title>
        	<meta charset="utf-8">
        	<script type="text/javascript">
        		// 1. 声明一个无参数无返回值的函数
        		function fn1 () {
        			console.log("这是一个无参数无返回值的函数");
        		}
        		// 函数调用
        		fn1();
        
        		//2. 声明一个带参数无返回值的函数
        		function fn2 (a){
        			console.log(a);
        		}
        		fn2("hello");
        
        		// 3. 声明带参数带返回值的函数
        		function sum (a,b){
        			var sum = a + b;
        			// return sum;
        			return a + b;
        		}
        		// 传参的过程,就是给函数中形参变量赋值的过程 a=10;
        		var r1 = sum(10,20);  
        		console.log(r1);
        
        		// a=100;b为undefined 100 + undefined = NaN
        		var r2 = sum(100);
        		console.log(r2);
        
        		// 4.匿名函数
        		var fn = function (){
        			console.log("匿名函数");
        		};
        		fn();
        
        		//元素绑定
        		function sayHi() {
        			alert("Hi");
        		}
        	</script>
        </head>
        <body>
        	<button onclick="sayHi();">点击</button>
        </body>
        </html>


        练习:改装日期计算器
        1. 整体功能封装在一个函数中
        2. 将闰年判断的功能单独封装在一个函数中
          1. 接收参数(年份)
          2. 返回布尔值表示是否为闰年
        3. 整体的功能中涉及闰年判断的部分,都通过函数调用实现
        4. 添加界面元素,按钮 显示 日期计算器 ,点击时间用函数实现日期计算
          <!DOCTYPE html>
          <html>
          <head>
          	<title></title>
          	<meta charset="utf-8">
          	<script type="text/javascript">
          		// 闰年判断函数
          		function isRun(year) {
          			return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
          		}
          		function calculateDate() {
          			// 实现日期计算
          			//接收用户输入的年 月 日
          			var year = Number(prompt("请输入年份"));
          			var month = Number(prompt("请输入月份"));
          			var day = Number(prompt("请输入日期"));
          			//总天数
          			var totalDays = 0;
          			
          
          			// 计算天数 年 和 月
          			for(var i = 1990;i < year;i ++){
          				totalDays += 365;
          				if (isRun(i)) {
          					totalDays += 1;
          				}
          			}
          			// 当前年中月份的累加
          			for(var i = 1; i < month; i ++){
          				switch(i){
          					case 1 :
          					case 3 :
          					case 5 :
          					case 7 :
          					case 8 :
          					case 10:
          						totalDays += 31;
          						break;
          					case 4 :
          					case 6 :
          					case 9 :
          					case 11 :
          						totalDays += 30;
          						break;
          					case 2 :
          						totalDays += 28;
          						if (isRun(year)) {
          							totalDays += 1;
          							break;
          						}
          				}
          
          				//更新循环变量
          			}
          			// 累加当前月的天数
          			totalDays += day;
          			// 计算星期几,只需要总天数对7取余,余数就表示周几
          			var date = totalDays % 7;
          			var show = "";
          			switch(date){
          				case 0 :
          					show = "日";
          					break;
          				case 1 :
          					show = "一";
          					break;
          				case 2 :
          					show = "二";
          					break;
          				case 3 :
          					show = "三";
          					break;
          				case 4 :
          					show = "四" ;
          					break;
          				case 5 :
          					show = "五";
          					break;
          				case 6 :
          					show = "六";
          					break;
          
          			}
          			alert(year+"年"+month+"月"+day+"日是星期"+show);
          		}
          	</script>
          </head>
          <body>
          	<button onclick="calculateDate();">日期计算器</button>
          </body>
          </html>

           

  5. 变量的作用域
    1. 变量的作用域指的是变量起作用的范围
    2. 分类:
      1. 全局作用域
        处在全局作用域中的变量就是全局变量
        1. 在function之外通过var 声明的变量都是全局变量,在任何地方都可以访问
        2. 声明变量时,省略var关键字,一律是全局变量,推荐使用var关键字,不要省略
      2. 局部作用域
        (JS中局部作用域指的是函数作用域)
        局部作用域中的变量就叫局部变量
        1. 在函数内部使用var 关键字声明的变量都是局部变量,只在当前函数作用域可以访问,外界无法访问
        2. 局部变量出了函数就不能访问

          注意:在函数中访问变量,如果当前函数中没有该变量,就访问全局作用域中的变量
          如果当前函数中定义了该变量,全局中也有相同的变量名,函数就近访问变量
          <!DOCTYPE html>
          <html>
          <head>
          	<title></title>
          	<meta charset="utf-8">
          	<script type="text/javascript">
          		// 1. 全局变量
          		var a = 100,b = 200;
          		c = 300;
          
          		function fn() {
          			console.log("fn中访问变量",a,b,c);
          			// 只要省略var关键字来定义变量,一律为全局变量
          			d = 1000;
          		}
          		fn();
          		console.log("函数外部访问变量",a,b,c,d);
          
          		// 2. 局部变量
          		function fn2() {
          			var a = 10;
          			var b = 20;
          			console.log("fn2中访问变量",a,b);
          		}
          		fn2();
          		console.log("fn2外部访问变量",a,b);
          	</script>
          </head>
          <body>
          
          </body>
          </html>

           

3.数组

  1. Array 数组是一个有序的元素序列,数组中的元素会自动分配下标,从0开始,方便读写
  2. 创建数组
    1. 创建空数组
      var 数组名 = []
    2. 创建数组的同时初始化元素
      var 数组名 = [元素1,元素2,...];
    3. 创建空数组
      var 数组名 = new Array();
    4. 创建数组并初始化后
      var 数组名 = new Array(元素1,元素2,...);
      注意:
      var 数组名 = new Array(Num);
      只包含一个数值参数时,表示初始化数组长度
      et:
      var arr = new Array(5);
  3. 数组是使用
    1. 获取数组的长度
      属性:length
      使用:数组名.length; //获取数组长度
    2. 访问数组元素
      数组中每一个元素都有对应的下标
      元素的下标范围  0 -> length-1
      语法:数组名[下标]; 
    3. 设置数组元素
      语法:数组名[下标] = value;
      <!DOCTYPE html>
      <html>
      <head>
      	<title></title>
      	<meta charset="utf-8">
      	<script type="text/javascript">
      		// 创建数组
      		var arr1 = [];
      		var arr2 = [10,20,30,40];
      		var arr3 = new Array();
      		var arr4 = new Array("李易峰","周杰伦","林书豪","郭艾伦");
      		var arr5 = new Array(10);
      		console.log(arr1,arr1.length);
      		console.log(arr2,arr2.length);
      		console.log(arr3);
      		console.log(arr4,arr4[2]);
      		// 为数组添加元素
      		arr5[4] = 100;
      		console.log(arr5);
      
      	</script>
      </head>
      <body>
      
      </body>
      </html>

       

  4. 清空数组中的元素
    arr.length = 0;
  5. 循环遍历数组
    //正序
    for(var i = 0; i < arr.length; i ++){
        arr[i];
    }
    //倒序
    for(var i = arr.length - 1; i >=0; i --){
        arr[i];
    }
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<meta charset="utf-8">
    	<script type="text/javascript">
    		var arr = [10,20,12,32];
    		console.log(arr);
    		// arr.length = 0;
    		console.log(arr);
    
    		// 遍历数组
    		for(var i = 0;i < arr.length; i ++){
    			console.log(arr[i]);
    		}
    		for(var i = arr.length - 1; i >= 0; i --){
    			console.log(arr[i]);
    		}
    	</script>
    </head>
    <body>
    
    </body>
    </html>


    练习:
    1.  
      1. 让用户循环录入数据
      2. 将用户输入的数据存储在一个数组中
      3. 当用户输入exit 表示结束输入
      4. 结束之后输出数组中元素
    2. 创建一个包含若干整数的数组,找出其中的最大值并输出
    3. 创建一个只包含3个数字的数组,按照从小到大排序之后输出数组
    4. 声明一个数组包含若干个数字,从弹框中接收用户输入一个数字,查询数组,如果数组中存在对应的元素,输出其下标,没有,提示数据不存在
      <!doctype html>
      <html lang="en">
       <head>
        <meta charset="UTF-8">
        <meta name="Generator" content="EditPlus®">
        <meta name="Author" content="">
        <meta name="Keywords" content="">
        <meta name="Description" content="">
        <title>Document</title>
        <script>
      	//1.存储数据
      		var arr = [];
      		while(true){
      			var input = prompt("请输入数据");
      			if(input == "exit"){
      				break;
      			}
      			arr[arr.length] = input;
      		}
      		console.log(arr);
      	//2.找数组中的最大值
      		var arr2 = [12,3,54,65,123,-123,-56,666,78];
      		//保存最大值
      		var maxNum = arr2[0];
      		//遍历数组
      		for(var i = 0;i < arr2.length; i ++){
      			if(arr2[i] > maxNum){
      				maxNum = arr2[i];
      			}
      		}
      		//alert(maxNum);
      	//3. 排序
      		var arr3 = [67,128,34];
      		//两两比较,交换位置
      		if(arr3[0] > arr3[1]){
      			arr3[0] ^= arr3[1];
      			arr3[1] ^= arr3[0];
      			arr3[0] ^= arr3[1];
      		}
      		if(arr3[1] > arr3[2]){
      			arr3[1] ^= arr3[2];
      			arr3[2] ^= arr3[1];
      			arr3[1] ^= arr3[2];
      		}
      		if(arr3[0] > arr3[1]){
      			arr3[0] ^= arr3[1];
      			arr3[1] ^= arr3[0];
      			arr3[0] ^= arr3[1];
      		}
      		console.log(arr3);
      	//4. 查询数组元素
      		function findIndex () {
      			var arr = [12,34,32,54,65,8,99];
      			//定义变量,保存最终下标
      			var index = -1;
      			var input = prompt("请输入一个数字");
      			for(var i = 0; i < arr.length; i ++ ){
      				if(input == arr[i]){
      					//1. 如果找到对应数据,结束循环
      					//2. 输出对应的下标
      					index = i;
      					break;
      				}
      			}
      			//循环结束之后判断index是否为-1
      			if(index == -1){
      				console.log("数据不存在");
      			}else{
      				console.log(input + "对应的下标为" + index);
      			}
      
      		}
        </script>
       </head>
       <body>
      	<button onclick = "findIndex();">查询</button>
       </body>
      </html>

       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值