第5篇重复执行——让程序帮你干活**作者**中文编程倡导者—— 李金雨联系方式wbtm2718qq.com目标掌握循环语句让程序能够重复执行任务预计时间3课时135分钟难度⭐⭐⭐☆☆中等难度一、开篇引入1.1 本课目标学完本篇你将能够✅ 掌握for循环的各种写法✅ 掌握range遍历✅ 掌握break和continue✅ 理解嵌套循环✅ 能够打印各种图形1.2 生活场景引入循环就像跑步想象一下你在操场跑步跑一圈完成一次跑两圈完成两次…跑十圈完成十次程序中的循环也是这样打印10次Hello重复10次计算1到100的和重复加100次查找列表中的某个数重复查找直到找到1.3 预期成果展示运行今天的程序后你会看到 九九乘法表 1×11 1×22 2×24 1×33 2×36 3×39 1×44 2×48 3×412 4×416 ... 二、概念讲解2.1 for循环基础for是Go唯一的循环语句语法格式标准写法for初始语句;条件语句;后置语句{// 循环体}执行流程执行初始语句只执行一次判断条件语句如果为true执行循环体执行后置语句回到第2步重复直到条件为false代码示例packagemainimportfmtfuncmain(){// 打印1到5fori:1;i5;i{fmt.Printf(第%d次循环\n,i)}}输出结果第1次循环 第2次循环 第3次循环 第4次循环 第5次循环2.2 for循环的三种形式形式一标准for循环知道循环次数packagemainimportfmtfuncmain(){// 计算1到100的和var总和int0fori:1;i100;i{总和i}fmt.Printf(1到100的和是%d\n,总和)// 输出5050}形式二条件for循环类似whilepackagemainimportfmtfuncmain(){// 只要条件满足就继续循环var计数int1for计数5{fmt.Printf(计数%d\n,计数)计数}}形式三无限循环需要break退出packagemainimportfmtfuncmain(){var计数int1for{fmt.Printf(第%d次\n,计数)计数if计数5{break// 退出循环}}}2.3 range遍历range用来遍历数组、切片、字符串、map等遍历数组/切片packagemainimportfmtfuncmain(){var水果列表[]string{苹果,香蕉,橙子,葡萄}fmt.Println( 水果清单 )// 使用range遍历for索引,水果:range水果列表{fmt.Printf(%d. %s\n,索引1,水果)}fmt.Println()}输出结果 水果清单 1. 苹果 2. 香蕉 3. 橙子 4. 葡萄 遍历字符串得到每个字符packagemainimportfmtfuncmain(){var文字stringHellofor索引,字符:range文字{fmt.Printf(索引%d: %c\n,索引,字符)}}输出结果索引0: H 索引1: e 索引2: l 索引3: l 索引4: o如果不需要索引用下划线忽略packagemainimportfmtfuncmain(){var数字列表[]int{10,20,30,40,50}var总和int0// 只需要值不需要索引for_,数字:range数字列表{总和数字}fmt.Printf(总和%d\n,总和)// 输出150}2.4 break和continuebreak立即退出循环packagemainimportfmtfuncmain(){fmt.Println( 找第一个偶数 )var数字列表[]int{1,3,5,8,9,10}for_,数字:range数字列表{fmt.Printf(检查%d\n,数字)if数字%20{fmt.Printf(找到偶数%d\n,数字)break// 找到了退出循环}}fmt.Println(循环结束)}输出结果 找第一个偶数 检查1 检查3 检查5 检查8 找到偶数8 循环结束continue跳过当前循环继续下一次packagemainimportfmtfuncmain(){fmt.Println( 打印奇数 )fori:1;i10;i{ifi%20{continue// 如果是偶数跳过}fmt.Printf(%d ,i)}fmt.Println()// 换行}输出结果 打印奇数 1 3 5 7 92.5 嵌套循环循环里面还可以有循环代码示例packagemainimportfmtfuncmain(){fmt.Println( 打印矩形 )var行数int3var列数int5fori:0;i行数;i{forj:0;j列数;j{fmt.Print(* )}fmt.Println()// 每行结束换行}}输出结果 打印矩形 * * * * * * * * * * * * * * *九九乘法表packagemainimportfmtfuncmain(){fmt.Println( 九九乘法表 )fmt.Println()fori:1;i9;i{forj:1;ji;j{fmt.Printf(%d×%d%-2d ,j,i,i*j)}fmt.Println()}}输出结果 九九乘法表 1×11 1×22 2×24 1×33 2×36 3×39 1×44 2×48 3×412 4×416 ...三、动手实践3.1 基础练习必做练习1倒计时程序packagemainimport(fmttime)funcmain(){fmt.Println( 倒计时开始 )fori:10;i1;i--{fmt.Printf(倒计时%d\n,i)time.Sleep(1*time.Second)// 等待1秒}fmt.Println( 时间到)}练习2计算阶乘packagemainimportfmtfuncmain(){var数字int5var阶乘int1fmt.Printf( 计算 %d! \n,数字)fori:1;i数字;i{阶乘*i fmt.Printf(%d! %d\n,i,阶乘)}fmt.Printf(\n结果%d! %d\n,数字,阶乘)}练习3打印三角形packagemainimportfmtfuncmain(){fmt.Println( 打印三角形 )var高度int5fori:1;i高度;i{// 打印空格forj:1;j高度-i;j{fmt.Print( )}// 打印星号fork:1;k2*i-1;k{fmt.Print(*)}fmt.Println()}}输出结果 打印三角形 * *** ***** ******* *********3.2 进阶练习选做练习4猜数字游戏packagemainimportfmtfuncmain(){var目标数字int42var猜测intvar次数int0fmt.Println( 猜数字游戏 )fmt.Println(我想了一个1-100之间的数字你来猜)fmt.Println(输入0退出游戏)fmt.Println()for{fmt.Print(请输入你的猜测)fmt.Scanln(猜测)次数if猜测0{fmt.Println(游戏结束)break}if猜测目标数字{fmt.Println(太大了再试试)}elseif猜测目标数字{fmt.Println(太小了再试试)}else{fmt.Printf( 恭喜你猜对了答案就是%d\n,目标数字)fmt.Printf(你一共猜了%d次\n,次数)break}}}练习5打印菱形packagemainimportfmtfuncmain(){fmt.Println( 打印菱形 )var大小int5// 上半部分包括中间行fori:1;i大小;i{forj:1;j大小-i;j{fmt.Print( )}fork:1;k2*i-1;k{fmt.Print(*)}fmt.Println()}// 下半部分fori:大小-1;i1;i--{forj:1;j大小-i;j{fmt.Print( )}fork:1;k2*i-1;k{fmt.Print(*)}fmt.Println()}}3.3 挑战练习拓展练习6素数筛选器packagemainimportfmtfuncmain(){fmt.Println( 素数筛选器 )var上限int100fmt.Printf(1到%d之间的素数\n,上限)for数字:2;数字上限;数字{var是素数booltrue// 检查是否能被2到数字-1之间的数整除for除数:2;除数数字;除数{if数字%除数0{是素数falsebreak}}if是素数{fmt.Printf(%d ,数字)}}fmt.Println()}四、知识总结4.1 核心概念回顾概念解释例子for循环语句for i : 0; i 10; irange遍历集合for i, v : range 列表break退出循环breakcontinue跳过本次continue嵌套循环循环中的循环for { for { ... } }4.2 关键代码速查// 标准for循环fori:0;i10;i{fmt.Println(i)}// 条件for循环类似whilefor条件{// 循环体}// 无限循环for{// 循环体if退出条件{break}}// range遍历for索引,值:range列表{// 使用索引和值}// 只需要值for_,值:range列表{// 使用值}4.3 常见错误提醒错误原因解决方法死循环条件永远为true确保循环条件能变为false数组越界索引超出范围检查索引范围忘记计数器不增加确保有i混淆break和continue功能不清break是退出continue是跳过五、课后作业5.1 巩固练习题打印数字金字塔输入一个数字n打印n层的数字金字塔。1 222 33333 4444444计算平均值给定一个成绩列表计算平均分并找出最高分和最低分。打印斐波那契数列打印前20个斐波那契数列1, 1, 2, 3, 5, 8, 13…。5.2 创意编程题制作数字炸弹游戏规则系统随机生成一个1-100的数字作为炸弹玩家轮流输入数字如果输入的数字等于炸弹游戏结束当前玩家输如果输入的数字不等于炸弹缩小范围继续游戏示例输出 数字炸弹 范围1-100 请输入数字50 安全范围缩小为1-50 范围1-50 请输入数字25 炸弹游戏结束 5.3 下篇预习提示下一篇我们将学习“多维数据盒——管理大量数据”你将学会数组固定长度切片动态数组映射字典如何存储和操作大量数据预习问题如果要存储一个班级50个学生的成绩你会怎么做如果要根据学生姓名查找成绩有什么好办法附录代码模板// 第5篇练习模板// 作者____________// 日期____________packagemainimportfmtfuncmain(){// 在这里写你的代码 // for循环示例fori:1;i5;i{fmt.Printf(第%d次\n,i)}// range遍历示例var列表[]int{10,20,30}for_,值:range列表{fmt.Println(值)}// }学习感悟循环是编程中最强大的工具之一它让程序能够自动重复执行任务大大减少了代码量。掌握了循环你就能让程序帮你做很多重复的工作下篇预告《第6篇多维数据盒——管理大量数据》本教程由AI辅助生成专为初中生设计的Go语言中文编程入门教程作者李金雨联系方式wbtm2718qq.com