Python第六章 Python流程控制
第六章 Python流程控制
6.1 分支控制if
【注意】Python不支持switch,要使用只能用if elif
1、if
if int(input("请输入你的年龄")) > 18:
print("你成年了")
2、if... else...
if int(input("请输入你的年龄")) > 18:
print("你成年了")
else:
print("你未成年")
3、if... elif... else...
# 完成以下逻辑
# 如果身高 < 120cm 或者 VIP等级 > 3 就可以免费游玩
height = int(input("请输入你的身高"))
vip_level = int(input("请输入你的vip等级"))
if height < 120:
print("你可以免费游玩")
elif vip_level > 3:
print("你可以免费游玩")
else:
print("你不可以免费游玩")
当然可以不使用变量,输入后直接判断
if int(input("请输入你的身高")) < 120:
print("你可以免费游玩")
elif int(input("请输入你的vip等级")) > 3:
print("你可以免费游玩")
else:
print("你不可以免费游玩")
判断语句可以嵌套
【注意】if和else的搭配关系是根据缩进来判断的,而不是距离
if int(print("请输入你的身高(cm)")) > 120:
print("你的身高>120cm,不可以免费游玩")
print("不过如果你的vip等级 > 3,可以免费游玩")
if int(print("请输入你的vip等级")) > 3:
print("你可以免费游玩")
else:
print("你不可以免费游玩")
else:
print("你不可以免费游玩")
下面是一个案例(不使用循环完成
- 定义一个数字(1~10,随机产生),通过3次判断来猜出来数字
- 有3次机会猜测数字,通过3层嵌套判断实现
- 每次猜不中,会提示大了或小了
import random
num = random.randint(1, 10)
val = int(input("请输入一个数字"))
if val == num:
print("猜对了")
else:
if val > num:
print("大了")
else:
print("小了")
val = int(input("请重新输入"))
if val == num:
print("猜对了")
else:
if val > num:
print("大了")
else:
print("小了")
val = int(input("请重新输入"))
if val == num:
print("猜对了")
else:
if val > num:
print("大了")
else:
print("小了")
print("这个数字是", num)
6.2 循环控制
循环的三要素
- 初始条件
- 循环体
- 终止条件
6.2.1 while循环
计算1~100的和
i = 0
sum = 0
while i <= 100:
sum += i
i += 1
print(sum)
猜数字
import random
num = random.randint(1, 100)
val = int(input("请猜猜这个数字"))
while val != num:
if val > num:
print("大了")
else:
print("小了")
val = int(input("请猜猜这个数字"))
print("您猜对了,结果就是", val)
嵌套while循环,输出九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print(f"{j}*{i}={j*i}\t", end='')
j += 1
print()
i += 1
【强调】循环结构中要注意终止条件,否则陷入死循环
6.2.2 for循环
语法
for 临时变量 in 序列:
循环满足条件时执行的代码
其中数据序列可以是字符串、列表、元组等
【说明】python中的for只有for in的结构,无法定义循环条件,只能被动取出数据处理;理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
(1) for in 字符串
【说明】字符串也算是一个序列,其元素是每个字符
str = "abcddjaksljdsakljfhsalk"
for ch in str:
print(ch + " ", end='')
# a b c d d j a k s l j d s a k l j f h s a l k
(2) range()方法
range()一般有三种格式
- range(num):[0, num)的序列
- range(num1, num2):[num1, num2)的序列
- range(num1, num2, step):num1开始,每隔step的数据,不包含num2
【说明】range()大多是用作for遍历的
1、range(num)
for x in range(10):
print(f"{x} ", end='') # 0 1 2 3 4 5 6 7 8 9
2、range(num1, num2)
for x in range(2, 8):
print(f"{x} ", end='') # 2 3 4 5 6 7
3、range(num1, num2, step)
for x in range(3, 20, 4):
print(f"{x} ", end='') # 3 7 11 15 19
下面实现一个九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}*{i}={j*i}\t", end='')
print()
(3) 变量作用域
for i in range(5):
continue
print(i) # 4
上面的代码中,i是在for中才声明的,实际上可以在for外使用,但是规范上是不允许的
建议在for之前定义i
i = 0
for i in range(5):
continue
print(i) # 4
(4) break & continue
- break可以直接退出循环
- continue跳过当前循环
num = int(input("请输入最后的数值"))
for i in range(1, num + 1):
if i % 2 == 0:
continue
print(f"{i} ", end='')
# 1 3 5 7 9 11 13 15 17 19 21 23
案例:
某公司,账户余额有1W元,给20名员工发工资。
- 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
- 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
- 如果工资发完了,结束发工资。
import random
money = 10000
for id in range(1, 21):
score = random.randint(1, 10)
if score < 5:
continue
print(f"员工{id}的绩效为{score}, 获得1000元工资")
money -= 1000
if money == 0:
break
6.2.3 for vs while
while循环和for循环,都是循环语句,但细节不同:
1、在循环控制上:
- while循环可以自定循环条件,并自行控制
- for循环不可以自定循环条件,只可以一个个从容器内取出数据
2、在无限循环上:
- while循环可以通过条件控制做到无限循环
- for循环理论上不可以,因为被遍历的容器容量不是无限的
3、在使用场景上:
- while循环适用于任何想要循环的场景
- for循环适用于,遍历数据容器的场景或简单的固定次数循环场景