Python | 判断语句、循环语句
![Python | 判断语句、循环语句.png Python | 判断语句、循环语句.png](https://img1.imgtp.com/2023/08/03/JdUwvVmF.png)
判断是程序最基础最核心的逻辑功能。
1.布尔类型和比较运算符
1.1 布尔(bool)类型
布尔(bool)表达现实生活中的逻辑,即真和假:
- True 表示真;
- False 表示假。
True本质上是一个数字记作1,False记作0
1.1.1 布尔类型字面量
- True 表示真(是、肯定)
- False 表示假(否、否定)
1.1.2 定义变量存储布尔类型数据
变量名称 = 布尔类型字面量
布尔类型不仅可以自行定义,同时也可以通过计算得来,也就是使用比较运算符进行运算得到布尔类型的结果。
1.2 比较运算符
运算符 | 描述 |
---|---|
== | 判断内容是否相等,满足为True,不满足为False |
!= | 判断内容是否不相等,满足为True,不满足为False |
> | 判断运算符左侧内容是否大于右侧,满足为True,不满足为False |
< | 判断运算符左侧内容是否小于右侧,满足为True,不满足为False |
>= | 判断运算符左侧内容是否大于等于右侧,满足为True,不满足为False |
<= | 判断运算符左侧内容是否小于等于右侧,满足为True,不满足为False |
1.3 代码练习
# 定义变量存储布尔类型的数据
bool_1 = True
bool_2 = False
print(f"bool_1变量的内容是:{bool_1},类型是:{type(bool_1)}")
print(f"bool_2变量的内容是:{bool_2},类型是:{type(bool_2)}")
# 比较运算符的使用
# == , != , > , < , >= , <=
# 比较内容是否相等
num1 = 10
num2 = 10
print(f"{num1} == {num2}的结果是:{num1 == num2}")
num3 = 15
print(f"{num1} != {num3}的结果是:{num1 == num3}")
name1 = "HeyStar"
name2 = "HeyStar"
print(f"{name1} == {name2}的结果是:{name1 == name2}")
name3 = "heystar"
print(f"{name1} != {name3}的结果是:{name1 == name3}")
# 比较内容大于小于
num1 = 10
num2 = 5
print(f"{num1} > {num2}的结果是:{num1 > num2}")
print(f"{num1} < {num2}的结果是:{num1 < num2}")
num3 = 10
print(f"{num1} >= {num3}的结果是:{num1 >= num3}")
print(f"{num1} <= {num3}的结果是:{num1 <= num3}")
2.if语句的基本格式
2.1 if判断语句
程序中的判断语法
if 要判断的条件:
条件成立时,要做的事情
2.2 代码练习
age = input("请输入你的年龄:")
if int(age) >= 18:
print("恭喜你:")
print("成年了!")
print("时间过的真快")
其中int(age),由于input输入后,得到的是str类型,需要强转为int类型
3.if else语句
3.1 if else判断语句
程序中的判断语法
if 要判断的条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
...(省略)...
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
...(省略)...
3.2 代码练习
动物园1:
通过input语句获取键盘输入的身高
判断身高是否超过120cm,并通过print给出提示信息。
print("欢迎来到HeyStar动物园")
high = input("请输入你的身高(cm):")
if int(high) > 120:
print("您的身高超出120cm,游玩时需要购票10元。")
else:
print("您的身高未超出120cm,可以免费游玩。")
print("祝您游玩愉快!")
输出 :
4. if elif else语句
4.1 if elif else语句
程序中的判断语法:
if 条件1:
条件1满足应做的事情1
条件1满足应做的事情2
......
elif 条件2:
条件2满足应做的事情1
条件2满足应做的事情2
......
elif 条件3:
条件3满足应做的事情1
条件3满足应做的事情2
......
else:
所有条件都不满足应做的事情1
所有条件都不满足应做的事情2
......
4.1.2 代码练习
猜猜心里数字
1.定义一个变量,数字类型,内容随意。
2.基于input语句输入猜想的数字,通过if和多次elif的组合,判断猜想数字是否和心里数字一致。
numbers = 5
if int(input("请输入第一次猜测的数字:")) == numbers:
print("恭喜你,第一次就猜对了! o(* ̄▽ ̄*)ブ")
elif int(input("猜错了,还有两次机会,请输入第二次猜测的数字:")) == numbers:
print("恭喜你猜对了! o(* ̄▽ ̄*)ブ")
elif int(input("猜错了,你只剩一次机会了,请输入最后一次猜测的数字:")) == numbers:
print("恭喜你最后一次猜对了! o(* ̄▽ ̄*)ブ")
else:
print("一次都没有猜对. (T_T)")
输出结果:
5. 判断语句的嵌套
5.1 基础语法格式:
if 条件1:
满足条件1做的事情1
满足条件1做的事情2
if 条件2
满足条件2做的事情1
满足条件2做的事情2
如上图,第二个if,属于第一个if中,只有第一个if满足条件,才会执行第二个if
嵌套的关键点,在于空格缩进
通过空格缩进,来决定语句之间的:层次关系
5.2 代码练习
动物园2
通过input语句获取键盘输入的身高、会员级别
判断身高是否超过120cm,判断会员级别,并通过print给出提示信息。
print("欢迎来到HeyStar动物园")
high = input("请输入你的身高(cm):")
if int(high) > 120:
print("您的身高超出120cm,游玩时需要购票10元。")
if int(input("请输入您的会员级别:")) >= 3:
print("尊敬的会员:")
print(" 您可以免费游玩!")
else:
print("尊敬的游客:")
print(" 请您购票后,继续游玩")
else:
print("您的身高未超出120cm,可以免费游玩。")
print("祝您游玩愉快!o(* ̄▽ ̄*)ブ")
输出结果:
6.判断语句实战案例
定义一个数字(1~10,随机生成),通过3次判断来猜出数字。
要求:
1.数字随机生成,范围1~10
2.有3次机会,通过3层嵌套判断实现
3.每次猜不中,提示大了或小了
提示
通过以下代码,可以定义一个变量num,变量内存储随机数字
import random
num = random.randint(1,10)
代码
import random
numbers = random.randint(1,10)
num = int(input("请输入第一次猜测的数字:"))
if num == numbers:
print("恭喜你,第一次就猜对了")
else:
if num > numbers:
print("猜测数字过大,猜小一点。")
else:
print("猜测数字过小,猜大一点。")
num = int(input("请输入第二次猜测的数字:"))
if num == numbers:
print("恭喜你,第二次就猜对了")
else:
if num > numbers:
print("猜测数字过大,猜小一点。")
else:
print("猜测数字过小,猜大一点。")
num = int(input("请输入第三次猜测的数字:"))
if num == numbers:
print("恭喜你猜对了")
else:
print("没有猜对,次数已用完")
循环同样是程序最基础最核心的逻辑功能!
循环的两种基本元素:条件、操作
7. while 循环
7.1 while的基础语法
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
7.1.1 代码练习
输出100遍"Hello World!"
i = 0
while i < 100:
print("Hello World!")
i += 1
7.2 while循环的注意事项
- while的条件需要得到布尔类型,True表示继续循环,False表示结束循环
- 需要设置循环终止的条件,如
i += 1
配合i<100
,就能确保100次后停止,否则将无限循环 - 空格缩进和if判断一样,都需要设置
7.3 使用while循环,计算1~100的和
代码:
i = 1
num_sum = 0
while i <= 100:
num_sum += i
i += 1
print(num_sum)
输出:5050
7.4 while循环的基础案例————猜数字
设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
- 无限次机会,直到猜中为止
- 每一次猜不中,会提示大了或小了
- 猜完数字后,提示猜了几次
提示:
-
无限次机会,终止条件不适合用数字累加来判断
- 可以考虑布尔类型本身(True or False)
-
需要提示几次猜中,就需要提供数字累加功能
-
随机数可以使用:
import random num = random.randint(1,10)
代码:
import random
num = random.randint(1, 100)
guess_num = 0
count = 0
while guess_num != num:
count += 1
guess_num = int(input("请输入您猜的数字:"))
if guess_num < num:
print("猜测过小,再猜一个吧。")
elif guess_num > num:
print("猜测过大,再猜一个吧。")
print(f"第 {count} 次,猜对,数字为:{num}")
7.5 while循环的嵌套应用
7.5.1 基本格式
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
...(省略)...
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
...(省略)...
7.5.2 代码练习
输出100遍Hello,1000遍world
i = 0
while i < 100:
print("Hello")
j = 0
while j < 10:
print(" World")
j += 1
i += 1
7.5.3 注意事项
-
通判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进
- 基于空格缩进来决定层次关系
-
注意条件的设置,避免出现无限循环(除非真的需要无限循环)
7.5 while循环的嵌套案例
7.5.1 补充知识
7.5.1.1 print输出不换行
默认的print语句输出内容会自动换行
使用以下语法可以将print输出不换行
print("Hello",end='')
print("World",end='')
7.5.1.2 制表符\t
在字符串中,有一个特殊的符号:\t
,效果等同于在键盘上按下tab键
可以将多行字符串进行对齐
7.5.2 练习案例-打印九九乘法表
代码:
i = 1
while i < 10:
j = 1
while j <= i:
print(f"{j}×{i}={j * i}\t", end='')
j += 1
print("")
i += 1
输出结果:
8. for循环
8.1 for循环的基础语法
除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:
- while循环的循环条件是自定义的,自行控制循环条件
- for循环是一种 "轮询" 机制,是对一批内容进行 "逐个处理"
8.1.1 程序中的循环:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
8.1.2 循环字符串
# 定义字符串name
name = "HeyStar"
# for循环处理字符串
for x in name:
print(x)
for循环是将字符串的内容:依次取出
所以,for循环也被称为:遍历循环
8.1.3 注意点
同while循环不同,for循环是无法定义循环条件的。
只能从被处理的数据集中,依次取出内容进行处理。
所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
8.1.4 for循环案例
数一数有几个a
定义字符串变量name,内容为:"itheima is a brand of itcast"通过for循环,遍历此字符串,统计有多少个英文字母: "a"
name = "itheima is a brand of itcast"
count = 0
for x in name:
if x == 'a':
count += 1
print(f"在\"{name}\"中,共有{count}个\"a\"")
输出结果:
8.2 range语句
语法中:待处理数据集,严格来说,称之为:序列类型
序列类型指,其内容可以一个个依次取出的一种类型,包括:
- 字符串
- 列表
- 元组
- 等
for循环语句,本质上是遍历:序列类型。
我们可以通过学习range语句,获得一个简单的数字序列。
8.2.1 语法1
range(num)
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)
取得的数据是:[0,1,2,3,4]
8.2.2 语法2:
range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)如,range(5,10)
取得的数据是:[5,6,7,8,9]
8.2.3 语法3:
range(num1, num2, step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)数字之间的步长,以step为准( step默认为1)
如,range(5,10,2)
取得的数据是:[5,7,9]
8.2.4 代码练习
# range语法1 range(num)
for x in range(10):
print(x, end=' ') # 打印0~9
print()
# range语法2 range(num1,num2)
for x in range(5, 10):
print(x, end=' ') # 从5开始,到10结束(不包含10本身)的一个数字序列
print()
# range语法3 range(num1,num2,step)
for x in range(5, 10, 2):
print(x, end=' ') # 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间的间隔是2
print()
输出结果:
8.3 range语法案例
有几个偶数
定义一个数字变量numt,内容随意
并使用range()语句,获取从1到num的序列,使用for循环遍历它。在遍历的过程中,统计有多少偶数出现
代码
count = 0
for x in range(1, 101):
if x % 2 == 0:
count += 1
print(f"在1~100中,有{count}个偶数!")
输出结果
![有几个偶数.png 有几个偶数.png](https://img1.imgtp.com/2023/08/03/dKsXORgP.png)
8.4 变量作用域
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部
如果在for循环外部访问临时变量:
- 实际上是可以访问到的
- 在编程规范上,是不允许、不建议这么做的
8.5 for循环的嵌套应用
程序中的嵌套for循环
for临时变量in待处理数据集(序列)∶
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
...
for临时变量in待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
8.5.1 代码练习
for i in range(1,100):
print(f"今天是学习Python的第{i}天:")
for j in range(1,10):
print(f"第{i}天学习的第{j}个语法,真简单!")
j += 1
i += 1
8.5.2 注意点:
- 需要注意缩进,嵌套for循环同样通过缩进确定层次关系
- for循环和while循环可以相互嵌套使用
8.6 for循环案例-打印九九乘法表
代码
for i in range(1, 10):
j = 1
for j in range(1, i+1):
print(f"{j}×{i}={i * j}\t", end=' ')
print()
输出结果
![打印九九乘法表.png 打印九九乘法表.png](https://img1.imgtp.com/2023/08/03/vuIHAQ4l.png)
8.7 continue和break
无论是while循环或是for循环,都是重复性的执行特定操作。在这个重复的过程中,会出现一些其它情况让我们不得不:
- 暂时跳过某次循环,直接进行下一次
- 提前退出循环,不在继续
continue和break关键字,用以对循环进行临时跳过和直接结束。
8.7.1 continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环,效果一致
for i in range(1,100):
语句1
continue
语句2
以上的代码中:
- 在循环内,遇到continue就结束当次循环,进行下一次
- 所以,语句2是不会执行的。
应用场景:
在循环中,因某些原因,临时结束本次循环。
嵌套引用:
continue关键字只可以控制:它所在的循环临时中断
for i in range(1,100):
语句1
for j in range(1,100):
语句2
continue
语句3
语句4
在以上的代码中,语句3无法执行,但语句4可以执行。
8.7.2 break
break关键字用于:直接结束循环
break可以用于:for循环和while循环,效果一致
for i in range(1,100):
语句1
break
语句2
语句3
以上的代码中:
- 在循环内,遇到break就结束循环了
- 所以,执行了语句1后,直接执行语句3了
嵌套引用:
break关键字同样只可以控制:它所在的循环结束
for i in range(1,100):
语句1
for j in range(1,100):
语句2
break
语句3
语句4
在以上的代码中,输出1遍语句1时,输出语句2,100次,再输出1次语句4
8.7.3 注意点
- continue和break,在for和while循环中作用一致
- 在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用
9.循环综合案例
某公司,账户余额有1W元,给20名员工发工资。
- 员工编号从1到20,从编号1开始。依次领取工资,每人可领取1000元
- 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
- 如果工资发完了,结束发工资。
提示:
- 使用循环对员工依次发放工资
- continue用于跳过员工,break直接结束发工资
- 随机数可以用:
import random
num = random.randint(1,10)
代码
import random
balance = 10000 # 账户余额
for i in range(1, 20):
num = random.randint(1, 10) # 绩效分
if num < 5:
print(f"员工{i},绩效分{num},低于5,不发工资,下一位")
else:
balance -= 1000
print(f"向员工{i}发放1000元,账户余额剩余{balance}元")
if balance == 0:
print("工资发完了,下个月再领取吧。")
break
运行结果图
![发工资.png 发工资.png](https://img1.imgtp.com/2023/08/03/r6PViPl4.png)