第九讲:了不起的分支和循环
一、知识点:
0.for循环,可以遍历任何序列的项目,如一个列表或者一个字符串。语法为:
for <变量> in <序列>: <执行代码> else: <执行代码>
range(stop) range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
for letter in 'Runoob': # 第一个实例 if letter == 'b': break print ('当前字母为 :', letter) var = 10 # 第二个实例 while var > 0: print ('当期变量值为 :', var) var = var -1 if var == 5: break print ("Good bye!")输出结果:
当前字母为 : R 当前字母为 : u 当前字母为 : n 当前字母为 : o 当前字母为 : o 当期变量值为 : 10 当期变量值为 : 9 当期变量值为 : 8 当期变量值为 : 7 当期变量值为 : 6 Good bye!continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
for letter in 'Runoob': # 第一个实例 if letter == 'o': # 字母为 o 时跳过输出 continue print ('当前字母 :', letter) var = 10 # 第二个实例 while var > 0: var = var -1 if var == 5: # 变量为 5 时跳过输出 continue print ('当前变量值 :', var) print ("Good bye!")输出结果为:
当前字母 : R 当前字母 : u 当前字母 : n 当前字母 : b 当前变量值 : 9 当前变量值 : 8 当前变量值 : 7 当前变量值 : 6 当前变量值 : 4 当前变量值 : 3 当前变量值 : 2 当前变量值 : 1 当前变量值 : 0 Good bye!-------------------------------------------------------------------------------------------------------------------------
二、课后作业:
print('i love fishc')
5次,0到9,每次打印i值递增2,所以在i值为0,2,4,6,8的时候各打印一次
1.下面的循环会打印多少次"I Love FishC"?
print('i love fishc')
会报错, in 是“成员资格运算符”2. 回顾一下 break 和 continue 在循环中起到的作用?
break语句的作用是终止当前循环,跳出循环体。
continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。
3.请谈下你对列表的理解?列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
4.请问 range(10) 生成哪些数?
0到9,相当于range(0,10),list(range(0,10))得到[0,1,2,3,4,5,6,7,8,9]
5.目测以下程序会打印什么?
while True: while True: break print(1) print(2) break print(3)
2
3
6.什么情况下我们要使循环永远为真?
用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!7.【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?
i = 0 string = 'http://www.wenkuxiazai.com' while i < len(string)): print(i) i+= 1
上面的代码,每次循环都要调用len()函数,改为一次性直接调用如下:
i = 0 string = 'http://www.wenkuxiazai.com' length = len(string) while i < length: print(i) i += 1
-------------------------------------------------------------------------------------------------------------------------
三、动动手:
0.设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内
print('---------验证密码程序---------') times = 3 password = '123456' while times > 0: passwd = input('请输入密码:') if passwd == password: print('密码正确,正在进入程序……') break elif '*' in passwd: print('输入的密码不能带‘*’,请重新输入,',end='') continue elif passwd != password: print('密码错误,你还有',times-1,'次机会,',end='') times -= 11.编写一个程序,求 100~999 之间的所有水仙花数。如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
本人笨方法:
for i in range(100,1000): sum=(i//100)**3+((i%100)//10)**3+(i%10)**3 if sum == i: print(i)
小甲鱼代码:
for i in range(100, 1000): sum = 0 temp = i while temp: sum = sum + (temp%10) ** 3 temp //= 10 # 注意这里要使用地板除哦~ if sum == i: print(i)其中
while temp: sum = sum + (temp%10) ** 3 temp //= 10 # 注意这里要使用地板除哦~等价于
sum=(i//100)**3+((i%100)//10)**3+(i%10)**32.三色球问题:
有红、黄、蓝三种颜色的球,其中红球3个,黄球3个,绿球6个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
print('-----三色球问题-----') for red in range(0,4): for yellow in range(0,4): for green in range(2,7): if red+yellow+green == 8: print('三色球组合有:','红色',red,'黄色',yellow,'绿色',green)
-------------------------------------------------------------------------------------------------------------------------