Python | 判断语句、循环语句.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("祝您游玩愉快!")

输出 :
我要买票吗.png

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)")

输出结果:
猜猜心里数字.png

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(* ̄▽ ̄*)ブ")

输出结果:
动物园2.png

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
    

输出结果:
打印九九乘法表.png

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\"")

输出结果:
数一数有几个a.png

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()

输出结果:
range.png

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

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

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