Python第009讲课后测试题:了不起的分支和循环 3

了不起的分支和循环 3

测试题:

0. 下面的循环会打印多少次 ‘I Love China!’?

for i in range(0, 10, 2):
	print('I Love China!')

会打印 5 次,因为从 0 开始,到 10 结束,步进为 2(0,2,4,6,8)

  1. 下面的循环会打印多少次 ‘I Love China!’?
for i in 5:
	print('I Love China!')

会报错!因为 in 在 Python 是 “成员资格运算符”,而不是像 C 语言那样去使用 for 语法
Python 的 for 更像脚本语言的 foreach

Traceback (most recent call last):
	File "<pyshell#21>", line 1, in <module>
		for i in 5:
	TypeError: 'int' object is not iterable

2. 回顾一下 break 和 continue 在循环中起到的作用?

(1) break 语句的作用是终止当前循环,跳出循环体
(2) continue 语句的作用是终止本轮循环并开始下一轮循环
(这里要注意的是:在开始下一轮循环之前,会测试循环条件)

3. 请谈下你对列表的理解?

和 C语言的数组差不多,和 Vector容器也很像,有许多套的方法

4. 请问 range(10) 生成那些数?

会生成 range(0, 10), list(range(0, 10)) 转换成列表是: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
注意不包括 10

5. 目测以下程序会打印什么?

while True:
	while True:
		break
		print(1)
	print(2)
	break
print(3)

会打印 2 3;因为print(1)不在第一个循环直接执行了break跳出此次循环,所以print(1)不起作用

6. 什么情况下我们要使循环永远为真?

while True:
	循环体

(1) 同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”
(2) 操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环
(3) 另外,许多通讯服务器的客户点/服务器系统也是通过这样的原理来工作的
所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

7. 你觉得以下代码效率方面怎样?有没有办法可以大幅度改进?(仍然使用while)

这段代码之所以“效率比较低”是因为每次循环都需要调用一次 len() 函数

i = 0
string = 'ILoveChina!'
while i < len(string):
	print(i)
	i += 1

改进后:

i = 0
string = 'ILoveChina!'
lenght = len(string)
while i < lenght:
	print(i)
	i += 1	

动动手:

0. 设计一个验证用户密码的程序,用户只有三次错误机会,不过如果用户输入的内容中包含 “*” 则不计算在内

# 定义三次输入错误机会
times = 3
# 用户输入密码
passwd = input('请输入密码:')
# while循环,如果用户输入的内容中包含 '*' ,则需要用户重新输入
while '*' in passwd:
	passwd = input('请重新输入密码:')		# 重新输入
print('合法')		# 密码合法

1. 编写一个程序,求 100~999 之间的所有水仙花数
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数

for i in range(100, 1000):
	sum = 0
	temp = i
	sum += (temp % 10)**3
	temp //= 10
	sum += (temp % 10)**3
	temp //= 10
	sum += (temp % 10)**3
	if i == sum:
		print(i)

注意这里要用 float 除法 //

2. 三色球问题: 有红、黄、绿三种颜色的球,其中红球3个,黄球3个,绿球6个
先将这12个球混合放在一个盒子中,从中任意摸出8个球,编程计算摸出球的各种颜色搭配

count = 0	# 记录情况总数
# 红球3个
for red in range(0, 4):		# 等同于 i=0, i<4,i++	
	# 黄球3个
	for yellow in range(0, 4):
		# 绿球6个
		for green in range(0, 7):
			# 任意摸出的球8个
			if red + yellow + green == 8:
				print('红球: ', red, '黄球: ', yellow, '绿球: ', green)
				count += 1
print('总数:', count)

3. range( [start,] stop [, step = 1] )的使用

(1) 这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step = 1 表示第三个参数的默认值是1
(2) range这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列
(包含start,不包含stop)。

range(5)
range(0,5)
range(1,100,2)

上面第一个语句和第二个语句范围相同
第三个语句步进为2相当于生成1-100的奇数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值