零基础入门学习Python(9)--了不起的分支和循环3

mac2022-06-30  79

前言

本节继续介绍分支和循环

知识点

while循环

Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码。不同的是只要条件为True,while循环就会一直重复执行那一段代码,我们把这段代码称之为循环体。直到条件为False时,才会停止。

当我们在这个循环体设置一些语句,以修改条件,那么我们这个while循环运行到指定位置时,就会退出。 语法:

while 条件: 循环体

例如: 我们条件设置为 i<10, 循环体设置为i += 1,那么每执行一次循环体,条件i就会加1,直到i=10时,条件为假,才会退出循环。

for循环

虽然说Python是由C语言编写而来的,但是它的for循环跟C语言的for循环不太一样,Python的for循环显得更为智能和强大! 主要是体现在Python的for循环可以自动的调用迭代器,自动捕获一些异常,并结束循环。 语法:

for 目标 in 表达式: 循环体 目标:每一次迭代的变量 表达式:一个列表或者元祖

实验:

>>> for i in a: print(i,end=' ') F i s h C >>> for each in member: print(each,len(each)) 小甲鱼 3 黑夜 2 小布丁 3 迷途 2 怡静 2

range()

for循环的小伙伴

语法:range([start],stop[,step=1]) 这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。 step=1:第三个参数的值默认为1,表示每次递增为1 range这个BIF的作用是生成一个从start参数的值开始到stop参数值结束的数字序列。

实验:

>>> range(5) range(0, 5) >>> list(range(5)) [0, 1, 2, 3, 4] >>> for i in range(5): print(i) 0 1 2 3 4 >>> for i in range(2,9): print(i) 2 3 4 5 6 7 8 >>> for i in range(1,10,2): print(i) 1 3 5 7 9

两个关键的语句break,continue

break作用终止当前循环,跳出循环体

例子:

bingo = '小甲鱼是帅哥' answer = input('请输入小甲鱼最想听的一句话:') while True: if answer == bingo: break answer = input('抱歉,错了,请重新输入(答案正确才能退出游戏):') print('哎哟,帅哦~') print('您真是小甲鱼肚子里的蛔虫啊^_^') 运行结果: 请输入小甲鱼最想听的一句话:sha 抱歉,错了,请重新输入(答案正确才能退出游戏):bi 抱歉,错了,请重新输入(答案正确才能退出游戏):nidaye 抱歉,错了,请重新输入(答案正确才能退出游戏):小甲鱼是帅哥 哎哟,帅哦~ 您真是小甲鱼肚子里的蛔虫啊^_^

continue作用终止本轮循环并开始下一轮循环,在开始下一轮循环之前,会先测试循环条件,只有循环条件为True时,它才会开始下一轮循环。否则,退出循环。

例子:

for i in range(10): if i%2 != 0: print(i) continue i += 2 print(i) 运行结果: 2 1 4 3 6 5 8 7 10 9

分析: range(10) = [0,1,2,3,4,5,6,7,8,9] 当i为0时,if条件为假,直接运行i += 2,打印2 当i为1时,if条件为真,打印1,终止本轮循环,开始下一轮循环 当i为2时,if条件为假,直接运行i += 2,打印 4 当i为3时,if条件为真,打印3,终止本轮循环,开始下一轮循环 当i为4时,if条件为假,直接运行i += 2,打印6 当i为5时,if条件为真,打印5,终止本轮循环,开始下一轮循环 当i为6时,if条件为假,直接运行i += 2,打印8 当i为7时,if条件为真,打印7,终止本轮循环,开始下一轮循环 当i为8时,if条件为假,直接运行i += 2,打印 10 当i为9时,if条件为真,打印9,终止本轮循环,开始下一轮循环

课后习题

目测以下程序会打印什么? while True: while True: break print(1) print(2) break print(3) 运行结果: 2,3 以下程序有没有办法大幅提升效率(仍然使用while): i = 0 string = 'ILoveFishC.com' while i < len(string): print(i) i += 1 ------- while True: for i in range( len('ILoveFishC.com')): print(i) break -------- i = 0 string = 'ILoveFishC.com' length = len(string) while i < length: print(i) i += 1 --------- 这段代码之所以效率低,是因为每次循环都需要调用len()函数。 设计一个验证密码程序,用户只有三次机会输入错误,如果用户输入的内容中包含*则不计算在内。 password = 'fishC' count = 3 while count: passwd = input('请输入密码:') if passwd == password: print('密码正确,进入程序...') break elif '*' in passwd: print('密码中不能含有"*"号!您还有',count,'次机会~',end=' ') continue else: print('密码输入错误!您还有',count-1,'次机会~',end=' ') count -= 1 运行结果: 请输入密码:* 密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:* 密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:* 密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:k 密码输入错误!您还有 2 次机会~ 请输入密码:k 密码输入错误!您还有 1 次机会~ 请输入密码:* 密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:* 密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:* 密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:fishC 密码正确,进入程序...

编写一个程序,求100~999之间的所有水仙花数。

如果一个3位数等于各位数字的立方和,则称这个数为水仙花数,例如:153 = 1^3 + 5^3 + 3^3 for x in range(0,10): for y in range(0,10): for z in range(0,10): sum = x*100 + y*10 +z if x**3 + y**3 + z **3 == sum and sum>=100 and sum<1000: print(sum) --------- for i in range(100, 1000): sum = 0 temp = i while temp: sum = sum + (temp%10) ** 3 temp //= 10 # 注意这里要使用地板除哦~ if sum == i: print(i) 运行结果: ================== RESTART: C:/Users/ThinkPad/Desktop/1.py ================== 153 370 371 407

解释:

转载于:https://www.cnblogs.com/wanbin/p/9514702.html

最新回复(0)