05.分支循环

1. if 判断语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NSIig7TO-1644804100788)(day02.assets/image-20190425064113975.png)]

If 判断的基本格式

if 判断条件:
    判断条件为 True,会执行的代码
    判断条件为 True,会执行的代码
    ...

顶格书写的代码,代表和 if 判断没有关系
在 python 中使用缩进,代替代码的层级关系,if 语句的缩进内,属于 if 语句的代码块(多行代码的意思)

案例需求:

  1. 通过用户键盘输入,获取年龄
  2. 判断年龄是否满足18岁,满足输出哥18岁了,可以进入网吧为所欲为了
  3. 程序最后输出,if 判断结束(不管是否满足,都会输出)
# 1. 通过用户键盘输入,获取年龄 input()
age = input('请输入你的年龄:')   # str
# 需要将字符串类型的的age, 转换为 int类型的age
age = int(age)  # int
# 2. 判断年龄是否满足18岁,满足输出`哥18岁了,可以进入网吧为所欲为了`
if age >= 18:
    # 条件满足才会执行
    print('哥18岁了,可以进入网吧为所欲为了')

# 3. 程序最后输出,`if 判断结束`(不管是否满足,都会输出)
print('if 判断结束')

if else 结构

if 判断条件:
    判断条件为 True,会执行的代码
    判断条件为 True,会执行的代码
    ...
else:
    判断条件为 False, 会执行的代码
    判断条件为 False, 会执行的代码
    .....
    
    
ifelse 只会执行其中的一个,    
# 1. 通过用户键盘输入,获取年龄 input()
age = input('请输入你的年龄:')   # str
# 需要将字符串类型的的age, 转换为 int类型的age
age = int(age)  # int
# 2. 判断年龄是否满足18岁,满足输出`哥18岁了,可以进入网吧为所欲为了`
if age >= 18:
    # 条件满足才会执行
    print('哥18岁了,可以进入网吧为所欲为了')
else:
    # 判断条件不满足,会执行的代码
    print('不满18岁,回去好好学习吧,少年!!!')

# 3. 程序最后输出,`if 判断结束`(不管是否满足,都会输出)
print('if 判断结束')

Debug 调试

  1. 可以查看代码的执行过程
  2. 可以排查错误

步骤:

  1. 打断点(一般可以在代码的开始打上断点,或者在查看代码的地方打断点)

  2. 右键 debug 运行代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfC9rGXI-1644804100793)(day02.assets/image-20200927093647690.png)]

  3. 点击 下一步, 查看代码执行的过程

if elif 结构

if 	判断条件1:
    判断条件1成立,执行的代码
elif 判断条件2:
    判断条件1不成立,判断条件2 成立,会执行的代码
else:
    判断条件1和判断条件2都不成立,执行的代码
    
--------
if 判断条件1:
    判断条件1成立执行的代码
    
if 判断条件2:
    判断条件2 成立执行的代码

需求:

  1. 成绩大于等于90 ,输出优秀
  2. 成绩大于等于80,小于90,输出良好
  3. 成绩大于等于60,小于80,输出及格
  4. 小于60,输出不及格
score = eval(input('请输入你的成绩:'))

# 1. 成绩大于等于90 ,输出优秀
if score >= 90:
    print('优秀')
# 2. 成绩大于等于80,小于90,输出良好
elif (score >= 80) and score < 90:
    print('良好')
# 3. 成绩大于等于60,小于80,输出及格
elif score >= 60:  # 想要执行这个判断的前提是,前边两个条件都不满足(成立), 代表score一定小于80
    print('及格')
# 4. 小于60,输出不及格
else:
    print('不及格')


print("程序结束")

if 嵌套

if 判断条件1:
    判断条件1 成立,会执行的代码
    if 判断条件2:
        判断条件1成立, 判断条件2成立执行的代码
    else:
        判断条件1成立, 判断条件2不成立执行的代码
else:
    判断条件1不成立,会执行的代码
# 假设 money 大于等于2 可以上车
money = int(input('请输入你拥有的零钱:'))
# ctrl x 剪切  ctrl v  粘贴

# 1. 有钱可以上车
if money >= 2:
    print('我上车了')
    # 假设 seat 大于等于1,就可以坐
    seat = int(input('车上的空位个数:'))
    # 3. 有空座位,可以坐
    if seat >= 1:
        print('有座位坐')
    else:
        # 4. 没有空座位,就站着
        print('没有座位,只能站着')
else:
    # 2. 没钱不能上车,走路
    print('没钱,我只能走路')

猜拳游戏

import random  # 导入随机数模块
# 产生 [a, b] 之间的随机整数,包含 a 和 b
num = random.randint(a, b) 
import random

# 1. 用户输入自己出拳的内容
user = int(input('请输入要出的拳:1(石头) 2(剪刀) 3(布):'))
# 2. 让电脑随机出拳
computer = random.randint(1, 3)  # 随机产生1-3 之间的随机数
# print(computer)
# 3. 判断胜负
# 3.1 平局 输入的内容一样  user == computer
# 3.2 user 胜利, ①. user==1 and computer==2  ② user==2 and computer==3 ③ user==3 and computer == 1
# 3.3 else 剩下的情况就是电脑胜利
if user == computer:
    print('平局')
elif (user == 1 and computer == 2) or (user == 2 and computer == 3) or (user == 3 and computer == 1):
    print('恭喜你,胜利了')
else:
    print('你输了,弱爆了')

三目运算

if else 结构变形

if 判断条件1:
    表达式1
else:
    表达式2
    
判断条件成立,执行表达式 1, 条件不成立,执行表达式 2

变量 = 表达式1 if 判断条件 else 表达式2  # 推荐使用扁平化代码

变量最终存储的结构是: 
    判断条件成立,表达式1的值, 
    条件不成立,表达式2的值
a = int(input('请输入一个数字:'))
b = int(input('请输入一个数字:'))

result = a - b if a > b else b - a
result = (a - b) if a > b else (b - a)
print(result)

在这里插入图片描述

2.循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZuNt7f6j-1644804100799)(day02.assets/image-20190425065026778.png)]

循环的基本语法

while 判断条件:
    判断条件成立,执行的代码
    判断条件成立,执行的代码
    
不在 while 的缩进内,代表和循环没有关系    

whileif 的区别:
    if 的代码块,条件成立,只会执行一次
    while 的代码块,只要条件成立,就会一直执行
# 使用print输出模拟跑一圈
# print('操场跑圈中.....')
# print('操场跑圈中.....')
# print('操场跑圈中.....')
# print('操场跑圈中.....')
# print('操场跑圈中.....')

# 使用循环解决跑圈问题
# 1. 记录已经跑了多少圈
i = 0
# 3. 书写循环,判断是否满足条件
while i < 5:
    print('操场跑圈中.....')
    # 2. 跑了一圈之后,记录的圈数加1
    i += 1

print('跑圈完成')
while True:  # 无限循环
    代码
    
    
死循环: 相当于是代码的 bug,错误
无限循环: 人为书写的,故意这样写的

应用

# 1 + 2 + 3 + 99 + 100
#  循环生成 1- 100 之间的数字
# 定义变量记录初始的值
my_sum = 0
i = 1
while i <= 100:
    # 求和
    my_sum += i  # my_sum = my_sum + i
    # 改变i的值
    i += 1

# 将代码放在循环的缩进里边.还是外边,可以思考,这行代码想让他打印输出几次,如果只输出一次,放在外边,
# 如果想要多次输出,放在里边
print('求和的结果为', my_sum)



# 偶数, 能被2整除的数是偶数  num % 2 == 0
#  循环生成 1- 100 之间的数字
# 定义变量记录初始的值
my_sum = 0
i = 1
while i <= 100:
    # 先判断数字是不是偶数,如果是偶数求和
    if i % 2 == 0:
        my_sum += i  # my_sum = my_sum + i
    # 改变i的值
    i += 1

# 将代码放在循环的缩进里边.还是外边,可以思考,这行代码想让他打印输出几次,如果只输出一次,放在外边,
# 如果想要多次输出,放在里边
print('求和的结果为', my_sum)



#  循环生成 1- 100 之间的数字
# 定义变量记录初始的值
my_sum = 0
i = 2  # 1-100 之间第一个偶数
while i <= 100:
    my_sum += i  # my_sum = my_sum + i
    # 改变i的值
    i += 2  # 保证每次的结果都是偶数

# 将代码放在循环的缩进里边.还是外边,可以思考,这行代码想让他打印输出几次,如果只输出一次,放在外边,
# 如果想要多次输出,放在里边
print('求和的结果为', my_sum)

循环嵌套

while 判断条件1:
    代码1
    while 判断条件2:
        代码2

======
代码 1 执行一次,代码会执行多次

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMDtYBye-1644804100804)(day02.assets/image-20200927122451099.png)]

3.for 循环遍历

for 变量 in 字符串:
    代码
for 循环也称为 for 遍历,会将字符串中的字符全部取到    
for i in 'hello':
    # i 一次循环是字符串中的一个字符
    print(i, end=' ')

# range(n)  会生成 [0, n) 的数据序列, 不包含n
for i in range(5):  # 0 1 2 3 4
    # print(i)
    print('操场跑圈...')

# range(a, b)  会生成 [a, b) 的整数序列, 不包含b
for i in range(3, 7):  # 3 4 5 6
    print(i)

# range(a, b, step) 会生成[a, b) 的整数序列,但是每个数字之间的间隔(步长)是step
for i in range(1, 10, 3):  # 1 4  7
    print(i)

循环打印正方形

n = int(input('请输入正方形的边长:'))
# n = 5

# 3. 打印 n 行的*
# 3.1 定义变量,记录打印了几行
j = 0
while j < n:
    # 2. 打印一行的*
    # 2.1 记录一行中已经打印的*个数
    i = 0
    while i < n:
        # 1. 打印一个*
        print('*', end=' ')   # 打印一行的时候, 不能换行
        i += 1
    # 一行打印结束之后,需要让j + 1, 同时还需要换行
    print()  # print函数默认会输出换行
    j += 1


# for 循环实现打印正方形
# 2. 打印n 行
for j in range(n):
    # 1. 打印一行
    for i in range(n):
        print('*', end=' ')
    print()  # 换行

循环打印直角三角形

在这里插入图片描述

n = 5

# 2. 定义变量,记录打印的行数
j = 1  # 将要打印第一行
while j <= n:
    # 1. 定义变量记录一行打印的*个数
    i = 1  # 将要打印第一个
    while i <= j:
        print('*', end=' ')
        i += 1
    print()
    j += 1


# for循环打印三角形
for i in range(n):  # 控制行数
    for j in range(i+1):  # i  range(i) 不包含i  , 控制一行打印的个数
        print('*', end=' ')
    print()

Break 和 continue

1. breakcontinue 是 python 两个关键字
2. breakcontinue 只能用在循环中
3. break 是终止循环的执行, 即循环代码遇到 break,就不再循环了
	continue 是结束本次循环,继续下一次循环, 即本次循环剩下的代码不再执行,但会进行下一次循环
# 有五个苹果
# 1. 吃了三个苹果之后, 吃饱了.后续的苹果不吃了
# 2. 吃了三个苹果之后.在吃第四个苹果,发现了半条虫子,这个苹果不吃了,还要吃剩下的苹果

for i in range(1, 6):
    if i == 4:
        print('吃饱了, 不吃了')
        break  # 终止循环的执行
    print(f'正在吃标号为 {i} 的苹果')

在这里插入图片描述

循环 else 结构

for x in xx:
    if xxx:
        xx  # if 判断条件成立会执行
    else:
        xxx  # if 判断条件不成立,会执行
else:
    xxx  # for 循环代码运行结束,但是不是被 break 终止的时候会执行
    
需求:
    有一个字符串 'hello python', 想要判断这个字符串中有没有包含 p 这个字符,如果包含,就输出, 包含 p, 如果没有 p ,就输出,不包含
my_str = 'hello python!'
# my_str = 'hello itcast!'

for i in my_str:
    if i == 'p':
        print('包含p这个字符')
        # 已经判断出来包含了,是否还需要继续判断
        break
else:
    print('不包含p这个字符')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwW05nv7-1644804100809)(day02.assets/image-20200927160200298.png)]

4.总结补充

num = 76
使用代码的方法,求出这个数字的个位数和十位数
个位数: num % 10 
十位数: num // 10
    
    
判断 if elif  else 

if 判断条件:
    pass  # 占位,空代码 让代码不报错
elif 判断条件:
    pass
else:
    pass


循环: 重复做一件事 while   for
while 判断条件:
    pass

for i in xxx:
    pass

breakcontinue,
    

5. 题目1 [加强训练]

题干

用户输入年龄,如果年龄超过60岁,输出:可以退休了。

训练目标

  1. if语句基础语法的使用;
  2. 比较运算符的使用。

训练提示

  1. 用户输入年龄,Python语言中,如何接收用户输入的数据?接收到的数据的数据类型是什么?
  2. 超过60岁,用哪种运算符?
  3. 年龄超过60岁是题目中唯一的一种情况,使用哪种if语句完成逻辑判断?

参考方案

  1. input()接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str;
  2. 超过60岁,使用比较运算符中的>>=

操作步骤

  1. input()接收用户输入的年龄,并转换数据类型为int;
  2. 如果年龄大于60条件成立,则输出:可以退休了

参考答案

# input()接收用户输入的年龄数据,并转换数据类型为int
age = int(input('请输入年龄:'))

# 条件判断:如果年龄大于60,则输出可以退休了
if age > 60:
    print('可以退休了')

6. 题目2 [加强训练]

题干

用户输入年龄,如果年龄超过60岁,输出:“可以退休了”, 否则,输出:“小伙子,加油干!”

训练目标

if…else语法

训练提示

题目描述了2种情况(年龄超过60岁和不超过60岁),涉及到2中情况需要判断的时候,使用哪种if语句格式?

参考方案

在Python中,能够判断两种情况的时候需要使用if…else…语句。

操作步骤

  1. input()接收用户输入的年龄,并转换数据类型为int;
  2. 如果用户输入的年龄大于60,则输出"可以退休了"; 条件不成立则输出:小伙子,加油干!

参考答案

age = int(input('请输入年龄:'))

if age >= 60:
    print('可以退休了')
else:
    print('小伙子,加油干!')

7 题目3 [加强训练]

题干

用户输入年龄,按照如下标准书写程序,判断用户处于哪个年龄阶段,并提示:您的年龄是xx: 青少年/青年/中年/老年。

年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。

训练目标

  1. elif多重判断写法;
  2. 逻辑运算符的使用方法。

训练提示

  1. 本题中年龄段分为青少年、青年、中年、老年四种情况需要判断,在Python中,判断多种情况需要使用哪种if语句格式?
  2. 每个年龄段有最低和最高年龄限制,使用哪种运算符能完成对最低和最高年龄同时判断?

参考方案

  1. 在Python中,判断多种情况需要使用elif多重判断写法;
  2. 对每个年龄段的最低和最高年龄同时限制,需要使用逻辑运算符中的and

操作步骤

  1. input()接收用户输入的年龄,并转换数据类型为int;
  2. if…elif对不同的年龄段进行判断。

参考答案

age = int(input("请输入您的年龄:"))

if (age >= 0) and (age < 17):
    print(f'您的年龄是{age}: 青少年')
elif (age >= 18) and (age < 35):
    print(f'您的年龄是{age}: 青年')
elif (age >= 35) and (age < 59):
    print(f'您的年龄是{age}: 中年')
elif (age >= 59) and (age < 99):
    print(f'您的年龄是{age}: 老年')

8. 题目4 [加强训练]

题干

坐公交:假设坐公交需要买票上车,书写程序要求如下:

  1. 如果有票则可以上车,否则不能上车
  2. 上车后,如果有座位可以坐下,否则不能坐下。

已有程序如下,请补全程序:

# ticket取值为1表示有票,取值为0表示无票
ticket = 1

# seat取值为1表示有座位,取值为0表示无座位
seat = 1

训练目标

if嵌套书写方法

训练提示

本题判断流程如下:判断能上车后,才能判断是否能坐下,如何书写程序完成这种判断流程?

参考方案

ticket == 1条件成立的时候才判断是否能坐下,所以这里是if嵌套的写法

操作步骤

  1. 书写ticket是否和1相等,如果条件成立表示可以上车;否则不能上车;
  2. ticket == 1条件成立的时候,书写判断能否坐下的if语句。

参考答案

ticket = 1
seat = 1

# 待补全的程序如下
if ticket == 1:
    print('有票,请上车')
    if seat == 1:
        print('有空座,坐下睡觉')
    else:
        print('没座位,站着睡')
else:
    print('没票,补票后才能上车')

9. 题目5 [加强训练]

题干

用户登录输入验证码,已知验证码是axyz, 验证码正确可以登录,否则输出:验证码错误。

训练目标

比较运算符==的使用方法

训练提示

如何判断用户输入的验证码和axyz相同?

参考方案

判断相等使用比较运算符==

操作步骤

  1. 用户输入验证;
  2. if…else…判断用户输入的验证码是否和axyz相等。

参考答案

sys_code = 'axyz'

user_code = input('请输入验证码:')

if user_code == sys_code:
    print('验证码正确,可以登录')
else:
    print('验证码错误,不能登录')

10.题目6 [综合训练]

题干

制作用户登录系统:已知A用户注册的用户名为aaa,密码是123456。具体要求如下:

登录时需要验证用户名、密码、验证码(固定验证码为qwer)。

提示:系统先验证验证码是否正确,正确后再验证用户名和密码。

训练目标

  1. if…else语句格式
  2. 比较运算符== 和 逻辑运算符
  3. if嵌套语句格式

训练提示

  1. 如何书写程序可以先验证验证码的正确性,验证码正确后再验证用户名和密码?
  2. 如何判断用户输入的验证码的正确性?
  3. 如何判断用户名和密码的正确性?

参考方案

  1. 先判断验证码的正确性,再验证用户名和密码,需要使用if嵌套写法;
  2. 判断用户输入的验证码/用户名/密码的正确性要使用到比较运算符==
  3. 登录功能要求用户名和密码必须同时正确,所以这里要使用到逻辑运算符and

操作步骤

  1. 准备用户名、密码、验证码等数据;
  2. 用户输入用户名、密码、验证码;
  3. 判断验证码是否为qwer
  4. 如果验证码为qwer,再验证用户名和密码的正确性。

参考答案

# 用户名、密码、验证码数据
sys_name = 'aaa'
sys_pwd = '123456'
sys_code = 'qwer'

# 用户输入用户名、密码、验证码
user_name = input('请输入用户名:')
user_pwd = input('请输入密码:')
user_code = input('请输入验证码:')

if user_code == sys_code:
    print('验证码正确')
    if user_name == sys_name and user_pwd == sys_pwd:
        print('恭喜您,登录成功')
    else:
        print('用户名或密码错误,请重新输入')
else:
    print('验证码错误,请重新输入')

代码按照以下方式书写,也可以:

# 用户名、密码、验证码数据
sys_name = 'aaa'
sys_pwd = '123456'
sys_code = 'qwer'

# 用户输入用户名、密码、验证码
user_name = input('请输入用户名:')

# 先验证验证码,如果正确,再输入用户名密码
if user_code == sys_code:
    print('验证码正确')
    user_pwd = input('请输入密码:')
    user_code = input('请输入验证码:')
    if user_name == sys_name and user_pwd == sys_pwd:
        print('恭喜您,登录成功')
    else:
        print('用户名或密码错误,请重新输入')
else:
    print('验证码错误,请重新输入')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XYDrestart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值