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. 定义一个数字(1~10,随机产生),通过3次判断来猜出来数字
  2. 有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 循环控制

循环的三要素

  1. 初始条件
  2. 循环体
  3. 终止条件

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

【强调】循环结构中要注意终止条件,否则陷入死循环

image-20230924195155325

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()一般有三种格式

  1. range(num):[0, num)的序列
  2. range(num1, num2):[num1, num2)的序列
  3. 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循环适用于,遍历数据容器的场景简单的固定次数循环场景
posted @ 2023-10-07 11:35  Crispy·Candy  阅读(20)  评论(0编辑  收藏  举报