1. if 判断语句
If 判断的基本格式
if 判断条件:
判断条件为 True,会执行的代码
判断条件为 True,会执行的代码
...
顶格书写的代码,代表和 if 判断没有关系
在 python 中使用缩进,代替代码的层级关系, 在 if 语句的缩进内,属于 if 语句的代码块(多行代码的意思)
案例需求:
- 通过用户键盘输入,获取年龄
- 判断年龄是否满足18岁,满足输出
哥18岁了,可以进入网吧为所欲为了
- 程序最后输出,
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, 会执行的代码
.....
if 和 else 只会执行其中的一个,
# 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 调试
- 可以查看代码的执行过程
- 可以排查错误
步骤:
-
打断点(一般可以在代码的开始打上断点,或者在查看代码的地方打断点)
-
右键 debug 运行代码
-
点击 下一步, 查看代码执行的过程
if elif 结构
if 判断条件1:
判断条件1成立,执行的代码
elif 判断条件2:
判断条件1不成立,判断条件2 成立,会执行的代码
else:
判断条件1和判断条件2都不成立,执行的代码
--------
if 判断条件1:
判断条件1成立执行的代码
if 判断条件2:
判断条件2 成立执行的代码
需求:
- 成绩大于等于90 ,输出优秀
- 成绩大于等于80,小于90,输出良好
- 成绩大于等于60,小于80,输出及格
- 小于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.循环
循环的基本语法
while 判断条件:
判断条件成立,执行的代码
判断条件成立,执行的代码
不在 while 的缩进内,代表和循环没有关系
while 和 if 的区别:
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 执行一次,代码会执行多次
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. break 和 continue 是 python 两个关键字
2. break 和 continue 只能用在循环中
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这个字符')
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
break 和 continue,
5. 题目1 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:可以退休了。
训练目标
- if语句基础语法的使用;
- 比较运算符的使用。
训练提示
- 用户输入年龄,Python语言中,如何接收用户输入的数据?接收到的数据的数据类型是什么?
- 超过60岁,用哪种运算符?
- 年龄超过60岁是题目中唯一的一种情况,使用哪种if语句完成逻辑判断?
参考方案
input()
接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str;- 超过60岁,使用比较运算符中的
>
或>=
。
操作步骤
input()
接收用户输入的年龄,并转换数据类型为int;- 如果年龄大于60条件成立,则输出:可以退休了
参考答案
# input()接收用户输入的年龄数据,并转换数据类型为int
age = int(input('请输入年龄:'))
# 条件判断:如果年龄大于60,则输出可以退休了
if age > 60:
print('可以退休了')
6. 题目2 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:“可以退休了”, 否则,输出:“小伙子,加油干!”
训练目标
if…else语法
训练提示
题目描述了2种情况(年龄超过60岁和不超过60岁),涉及到2中情况需要判断的时候,使用哪种if语句格式?
参考方案
在Python中,能够判断两种情况的时候需要使用if…else…
语句。
操作步骤
input()
接收用户输入的年龄,并转换数据类型为int;- 如果用户输入的年龄大于60,则输出"可以退休了"; 条件不成立则输出:小伙子,加油干!
参考答案
age = int(input('请输入年龄:'))
if age >= 60:
print('可以退休了')
else:
print('小伙子,加油干!')
7 题目3 [加强训练]
题干
用户输入年龄,按照如下标准书写程序,判断用户处于哪个年龄阶段,并提示:您的年龄是xx: 青少年/青年/中年/老年。
年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。
训练目标
- elif多重判断写法;
- 逻辑运算符的使用方法。
训练提示
- 本题中年龄段分为青少年、青年、中年、老年四种情况需要判断,在Python中,判断多种情况需要使用哪种if语句格式?
- 每个年龄段有最低和最高年龄限制,使用哪种运算符能完成对最低和最高年龄同时判断?
参考方案
- 在Python中,判断多种情况需要使用elif多重判断写法;
- 对每个年龄段的最低和最高年龄同时限制,需要使用逻辑运算符中的
and
。
操作步骤
input()
接收用户输入的年龄,并转换数据类型为int;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 [加强训练]
题干
坐公交:假设坐公交需要买票上车,书写程序要求如下:
- 如果有票则可以上车,否则不能上车
- 上车后,如果有座位可以坐下,否则不能坐下。
已有程序如下,请补全程序:
# ticket取值为1表示有票,取值为0表示无票
ticket = 1
# seat取值为1表示有座位,取值为0表示无座位
seat = 1
训练目标
if嵌套书写方法
训练提示
本题判断流程如下:判断能上车后,才能判断是否能坐下,如何书写程序完成这种判断流程?
参考方案
当ticket == 1
条件成立的时候才判断是否能坐下,所以这里是if嵌套的写法
操作步骤
- 书写ticket是否和1相等,如果条件成立表示可以上车;否则不能上车;
- 当
ticket == 1
条件成立的时候,书写判断能否坐下的if语句。
参考答案
ticket = 1
seat = 1
# 待补全的程序如下
if ticket == 1:
print('有票,请上车')
if seat == 1:
print('有空座,坐下睡觉')
else:
print('没座位,站着睡')
else:
print('没票,补票后才能上车')
9. 题目5 [加强训练]
题干
用户登录输入验证码,已知验证码是axyz
, 验证码正确可以登录,否则输出:验证码错误。
训练目标
比较运算符==
的使用方法
训练提示
如何判断用户输入的验证码和axyz
相同?
参考方案
判断相等使用比较运算符==
。
操作步骤
- 用户输入验证;
- if…else…判断用户输入的验证码是否和
axyz
相等。
参考答案
sys_code = 'axyz'
user_code = input('请输入验证码:')
if user_code == sys_code:
print('验证码正确,可以登录')
else:
print('验证码错误,不能登录')
10.题目6 [综合训练]
题干
制作用户登录系统:已知A用户注册的用户名为aaa
,密码是123456
。具体要求如下:
登录时需要验证用户名、密码、验证码(固定验证码为qwer
)。
提示:系统先验证验证码是否正确,正确后再验证用户名和密码。
训练目标
- if…else语句格式
- 比较运算符
==
和 逻辑运算符 - if嵌套语句格式
训练提示
- 如何书写程序可以先验证验证码的正确性,验证码正确后再验证用户名和密码?
- 如何判断用户输入的验证码的正确性?
- 如何判断用户名和密码的正确性?
参考方案
- 先判断验证码的正确性,再验证用户名和密码,需要使用if嵌套写法;
- 判断用户输入的验证码/用户名/密码的正确性要使用到比较运算符
==
。 - 登录功能要求用户名和密码必须同时正确,所以这里要使用到逻辑运算符
and
。
操作步骤
- 准备用户名、密码、验证码等数据;
- 用户输入用户名、密码、验证码;
- 判断验证码是否为
qwer
; - 如果验证码为
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('验证码错误,请重新输入')