文章目录
- 1. while循环
- 1.1 什么是循环?
- 1.2 while 循环
- 1.2.1 语法结构
- 1.2.2 循环中的异类
- 1.3 while循环使用案例
- 1.3.1 求1~100之间的和
- 1.3.2 求1~100之间偶数之和
- 1.3.3 循环中的"标志变量"
- 1.4 嵌套循环使用
- 1.4.1 嵌套循环语法结构
- 1.4.2 嵌套练习
- 1.5 知识扩展 --最大公约数
- 2. for 循环
- 2.1 语法结构
- 2.2 练习: 获取1~5的整数
- 2.2.1 range() 函数
- 2.3 for 循环的嵌套使用
- 2.3.1 打印直角三角型
- 2.3.2 打印九九乘法表
- 2.4 break 和 continue
- 2.4.1 break
- 2.4.2 continue
- 2.5 扩展知识 while - else 结构
1. while循环
1.1 什么是循环?
-
主要强调一个周而复始的概念,即满足条件重复执行。 但是有3个注意条件:
- 循环开始
- 判断条件
- 控制判断条件的控制,即,步长
-
根据上面的提示,我们可以去联想一些生活中的案例,分析一下,有什么相同的地方 ?。
- 操场跑圈
- 打印机打印文件
- 切黄瓜
- 爱你一万年
-
通过
print("跑了第i 圈")
输出的形式,模拟操场跑圈。- 第一种情况: 跑5圈。
- 第二种情况: 跑1万圈。
#第一种情况,跑5圈 print("跑了第1圈") print("跑了第2圈") print("跑了第3圈") print("跑了第4圈") print("跑了第5圈") # 那么跑 1万圈 怎么实现? 复制+黏贴?
1.2 while 循环
1.2.1 语法结构
-
循环三要素:
- 起始化值,
- 判断条件,
- 步长(控制循环)。
-
while
循环的语法格式:- 注意 步长控制的格式缩进.,
1.初始化值 while 2.判断条件: 执行语句(需要循环地方) 3.控制循环(步长)
-
结合语法结构, 完成跑操场跑一万圈.
- 第一个注意: 格式上的缩进.
- 第二个注意: 字符串输出的格式化
f " {} "
#第二种情况使用while语法格式跑1万圈 #1. 初始化值 i=1 while i<=10000 :#2.判断条件 # 需要循环的语句 print(f"跑了第{i}圈") #3.步长控制循环 i+=1
1.2.2 循环中的异类
-
无限循环又叫做 “死循环”,就是不会停止
- 请思考, 什么情况下会出现死循环?
# 1. 什么是无限循环 ? while True: # 判断条件永远会执行. print("永远和你在一起")
-
自己动手,通过 Debug 来查看循环的执行过程? 并给出你的结论.
- 注意观看 Debug控制台.
- 注意观看 Debug控制台.
1.3 while循环使用案例
1.3.1 求1~100之间的和
- 相当于从1累加到100.
- 提示: 起始值从 1开始.
""" 1. 第一种计算 1到100和 1.1 相当于 1+2+3...+100. 1.2 循环三要素: 初始化值 判断条件 步长(控制循环) """ #1. 初始值 i = 1 #3. 累计每一次的和 sum =0 #2.1-100之间的和 判断条件 i<=100 while i<=100: sum=sum+i #相当于每次循环累计一次. i+=1 # 步长控制循环 #循环结束输出 sum值 print(sum) #5050
1.3.2 求1~100之间偶数之和
-
什么是偶数?
- 需要使用运算符
%
去解决. - 使用Debug 查看.
# i%2==0 就是偶数 i = 1 oushu = 0 while i <= 100: # 进行判断偶数 if i % 2 == 0: oushu = oushu + i i += 1 # 步长 print(f"偶数之和{oushu}") #2550
- 需要使用运算符
-
第二种方式,通过改变控制条件, 来得到偶数.
- 需要注意初始化值. 思考?从0开始和从2开始的区别?
- 如果是使用步长控制值的变化,那么还需要使用选择结构去进行判断么?
# 第二种写法 i = 0 #既然是偶数相加可以从0开始,或者从2开始. oushu = 0 while i <= 100: #就不用判断了. oushu = oushu + i # 通过步长来控制循环,相当于2 i = i + 2 print(f"偶数之和是{oushu}")#2550
-
自己动手做: 请算出 1~100奇数之和.
- 思考一下, 这两种写法有什么区别? 用自己的语言描述一下.
#提示: 什么是奇数? #通过步长控制? #TODO coding
1.3.3 循环中的"标志变量"
-
妈妈每次都要问小明,“你作业做完了么?”,小明只有作业做完了才能出去玩, 没有做完就继续做,直到做完作业才可以.
- 循环中标志变量的使用.
''' 1. 标志变量一般在循环中相当于一个开关, 碰到了该变量就会停止, ''' # 声明一个标志变量 answer = "no" while answer == "no": print("作业中.....") answer = input("妈妈问: 小明作业做完了么?")#相当于步长. print(f"小明的回答是{answer}") print("程序结束")
1.4 嵌套循环使用
1.4.1 嵌套循环语法结构
-
嵌套顶级,核心语法
- 联想钟表:分针走一次, 秒针需要走一圈.
- 即: 外循环循环一次, 内循环循环一圈.
-
嵌套循环的语法结构
- 外层循环执行一次, 内层循环执行多次.
while 判断条件: #外循环 代码 1 while 判断条件: #内循环 代码2: 步长控制2 步长控制1
1.4.2 嵌套练习
-
要求输出一下格式,循环嵌套的目标结果.
- 操场跑圈,一共要跑5圈, 每跑一圈,需要做3个俯卧撑.
''' 第1圈 做了第1个俯卧撑 做了第2个俯卧撑 做了第3个俯卧撑 第2圈 做了第1个俯卧撑 做了第2个俯卧撑 做了第3个俯卧撑 第3圈 ... '''
-
根据上述需求,可以得知,一共跑5圈,每次3个俯卧撑
- 提示 : 可以先创建外层循环, 内层循环使用print()输出5次.然后再将内层循环带入.
- 注意: 格式上的缩进, 步长控制.
- 使用断点测试代码.
i = 1 while i <= 5: print(f"跑了第{i}圈") #准备做俯卧撑 #print("做俯卧撑") # 内层循环,直接带入. j = 1 while j <= 3: print(f"\t做第{j}个俯卧撑") #使用制表符 j += 1 #注意格式缩进 # 外层循环控制 i += 1
1.5 知识扩展 --最大公约数
-
一个数可以整除几个数,那么这几个数称为公约数.
- 1是最小公约数
""" 输入两个数 12 8 从开始 1 1 公约数 2 2 公约数 3 3 4 4 公约数(最大) 5 5 6 6 .. .. """
- 1是最小公约数
2. for 循环
2.1 语法结构
-
for循环也是循环,也是表示重复做某些事,只是语法格式同while循环不一样.
- 但是原理是一样的.
-
语法格式
for 输出变量名 in 要遍历的内容: 循环体
-
入门案例 变量字符串.
- 遍历字符串 “hello,world”
#遍历该字符串 for i in "hello,world": print(i)
2.2 练习: 获取1~5的整数
-
获取1~5的整数
#1.直接输入整数是不行的.需要一个范围,且是字符串形式 # for i in 12345: # print(i) # TypeError: 'int' object is not iterable print("-"*20) #华丽的分隔符 #2.需要使用字符串的形式 for i in "12345": print(i)
2.2.1 range() 函数
-
range() 函数可创建一个整数列表, 一般用在 for 循环中使用.
-
range()
使用的三种情况.- 自己总结一下规律.
- 反向遍历,从大到小
# 1. range(8) [0,8) for i in range(8): print(i) #根据输出结果自己总结 # 2. range(1,8) [1,8) for i in range(1,8): print(i) # 3. range(0,8,2) [0,8,2) 计数间隔2 for i in range(0,8,2): print(i) # 4.扩展知识 range(8,0,-2) for i in range(8,0,-2): print(i) # 相当于从反方向输出,即反向遍历
-
使用 for循环计算 1~100之间的和.
- 思考如果求:1~100的偶数之和呢?
#设置累计求和 sum sum = 0 # for循环语法 range(1,101) for i in range(1,101):#需要加到100,[1,101) sum = sum+i #累计求和 print(f"1~100的值是{sum}")
2.3 for 循环的嵌套使用
2.3.1 打印直角三角型
-
打印直角三角型
- 使用for循环的嵌套,
- 外循环控制行, 内循环控制输出次数
-
图形如下
* * * * * * * * * * * * * * *
-
代码:
- 举一个例子: 最快速的方式 ? 直接print输出,推荐使用 三引号.
- 使用带入方法,去编写代码.
""" 第二种方式:采用for循环的方式 分析一波: for 外层控制输出行数 for 内循环控制输出次数 第一次循环: for 外层循环第1次循环 for(内层) 输出1次 * 第二次循环: for 外层循环第2次循环 for(内层) 输出2次 * * 第三次循环: for 外层循环第3次循环 for(内层) 输出3次 * * * 第四次循环: for 外层循环第4次循环 for(内层) 输出4次 * * * * 第五次循环 for 外层循环第5次循环 for(内层) 输出5次 * * * * * """ for i in range(1,6): # [1,6) 相当于 1,2,3,4,5 次. #内层循环控制输出次数 for j in range(i): # 默认输出是"\n",需要该为end=""小细节 print("*",end=" ") #相当于换行 print("")
-
要求输入一个n打印出来相应的行数.即输入几就打印几行.
- 要了解
range(start,end,step)
的函数.
#.怎么分析代码? #当n =1 时 n=1 for i in range(n): for j in range(i): print("*", end=" ") print("") #当n=2时... n=2 for i in range(n): for j in range(i): print("*", end=" ") print("") # 当n=3时 ... n=3 for i in range(n): for j in range(i): print("*", end=" ") print("") # 最终: 所以得出结论,输入n+1 就是要打印的行数. n =4 for i in range(1,n+1): for j in range(i): print("*", end=" ") print("")
- 要了解
2.3.2 打印九九乘法表
-
使用循环来打印九九乘法表
""" 如何分析: 根据样式发现 外循环第一次循环 内循环一次 外循环 第二次 内循环输出二次 外循环 循环9次 内循环输出9次 """ # 根据语法格式 先搭建外循环构架 for i in range(1, 10): for j in range(1, i + 1): # 需要使用i+1 输出第一个 print(f"{j}x{i}={i * j}", end=" ") print("") print("*"*20)
-
思考: 第二种需求,当输入n时 生成 相应的乘法表.
#2,第二种需求,当输入n时 生成 相应的乘法表. n = 11; for i in range(1, n+1): for j in range(1, i + 1): # 需要使用i+1 输出第一个 print(f"{j}x{i}={i * j}", end=" ") print("")
2.4 break 和 continue
2.4.1 break
-
break 语句用于结束整个循环.
- 演示break的循环过程
- 只能使用在循环之中.
#1.break使用结构,跳出本次循环,并结束程序. i=1 while i<=10: print(i) #1 ,2,3 if i==3: break print(f"我执行了么?{i}") #后面的语句就不执行了. 1 ,2 i+=1
1 我执行了么?1 2 我执行了么?2 3
-
使用Debug查看.
2.4.2 continue
-
continue的作用是结束本次循环.执行下一次循环
- 演示continue 的循环过程.
- 只能使用在循环之中.
# 结束本次循环,执行下一次循环 for i in range(1, 10): print(i) if i == 3: continue print(f"我执行了么{i}") #相当于跳过了3,执行了后面.
2.5 扩展知识 while - else 结构
-
知道有if -else 结构, else 还可以和while一起使用.
- else执行也是有条件的.
- pass 占位符语句,又叫空语句.
# 1. 这叫做等式恒成立结构. 所以 else会是黄色的. if 5 > 3: print("if") else: print("else") # 2. pass 占位语句 if 5 > 3: # 如果不写会报错. pass # 使用pass占位,不执行任何,空语句 else: print("else") # 3. while-else结构 # 如果循环正常结束,循环输出就会执行 else里面 i = 1 while i <= 10: print(i) i = i + 1 else: print("else") #3.1 如果循环中有break就不会执行. i = 1 while i <= 10: print(i) if i==3: break i = i + 1 else: print("else")