个人主页:丷从心·
系列专栏:Python基础
学习指南:Python学习指南
布尔类型
- 布尔类型只有两个值
True
:表示“真”,表示条件成立False
:表示“假”,表示条件不成立
示例
have_money = True
have_troubles = False
比较运算符
- 通过使用比较运算符可以使表达式返回值为
True
或False
比较运算符 | 功能 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则返回值为True | a = 0 ,b = 0 ,则a == b 为 True |
!= | 检查两个操作数的值是否不等,如果是则返回值为True | a = 0 ,b = 1 ,则a != b 为 True |
> | 检查左操作数的值是否大于右操作数的值,如果是则返回值为True | a = 0 ,b = 1 ,则a > b 为 False |
< | 检查左操作数的值是否小于右操作数的值,如果是则返回值为True | a = 0 ,b = 1 ,则a < b 为 True |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则返回值为True | a = 0 ,b = 0 ,则a >= b 为 True |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则返回值为True | a = 0 ,b = 0 ,则a <= b 为 True |
示例
a = 0
b = 0
print(a == b)
a = 0
b = 1
print(a != b)
a = 0
b = 1
print(a > b)
a = 0
b = 1
print(a < b)
a = 0
b = 0
print(a >= b)
a = 0
b = 0
print(a <= b)
True
True
False
True
True
True
逻辑运算符
and
-
and
称为与运算,表示“并且”,如成年并且性别女 -
and
运算只有两个操作数都为True
,结果才为True
,即只要有一个操作数为False
,结果就为False
示例
age = 18
gender = '女'
print(age >= 18 and gender == '女')
age = 18
gender = '男'
print(age >= 18 and gender == '女')
True
False
or
or
称为或运算,表示“或者”,如本科生或者研究生or
运算只有两个操作数都为False
,结果才为False
,即只要有一个操作数为True
,结果就为True
示例
education = '本科生'
print(education == '本科生' or education == '研究生')
education = '中学生'
print(education == '本科生' or education == '研究生')
True
False
not
not
称为非运算,表示“否定”,如未满 18 18 18岁not
运算只有一个操作数,当操作数为False
时,结果为True
,当操作数为True
时,结果为False
示例
age = 18
print(not (age < 18))
True
特殊情况下的逻辑运算符
- 使用逻辑运算符
and
和or
时,一般两个操作数是True
或False
,但有时候并不是这样
and
- 猜测下面的示例的结果
print(1 and 2)
print(1 and 1 > 0)
print(0 and 1)
print(1 < 0 and 1)
2
True
0
False
- 为什么会产生这样的结果呢?
Python
具有布尔类型,具有True
和False
两个值,而在其他一些编程语言,如C
语言中是没有布尔类型的- 因此,
C
语言为了能够表示“真”和“假”,就制定了一个规定,只要数字不是 0 0 0,无论是正数还是负数都表示“真”,只有数字 0 0 0表示“假” Python
虽然引进了True
和False
两个值,但它仍然保留了C
语言中的这种开发者已经习以为常的规定,所以Python
中也使用非 0 0 0表示“真”, 0 0 0表示“假”- 当
and
的左侧表达式不是“真”时,右侧表达式根本不会被执行,因为执行右侧表达式没有必要,并且将左侧表达式的“值”作为结果 - 当
and
的左侧表达式是“真”时,右侧表达式才会被执行,并且将右侧表达式的“值”作为结果
- 因此
print(1 and 2)
,因为左侧表达式 1 1 1非 0 0 0,表示“真”,右侧表达式会被执行,此时将 2 2 2作为结果print(1 and 1 > 0)
,因为左侧表达式 1 1 1非 0 0 0,表示“真”,右侧表达式会被执行,此时将1 > 0
的值True
作为结果print(0 and 1)
,因为左侧表达式为 0 0 0,右侧表达式不会被执行,此时将 0 0 0作为结果print(1 < 0 and 1)
,因为左侧表达式1 < 0
的值为False
,右侧表达式不会被执行,此时将左侧表达式1 < 0
的值False
作为结果
or
-
有了
and
的经验,分析or
的结果就容易了 -
当
or
的左侧表达式是“真”时,右侧表达式不会被执行,因为执行右侧表达式没有必要,并且将左侧表达式的“值”作为结果 -
当
or
的左侧表达式不是“真”时,右侧表达式会被执行,并且将右侧表达式的“值”作为结果 -
猜测下面的示例的结果
print(1 or 2)
print(1 > 0 or 1)
print(1 < 0 or 0)
print(0 or 1 < 0)
1
True
0
False
if判断语句
if
用于判断一个条件,当条件为真时运行内部代码
格式
if 条件:
条件为真时, 需要运行的代码
示例
age = 18
if age >= 18:
print('我已经成年了')
我已经成年了
- 在
if
下方缩进的代码是if
语句控制的代码,缩进为 4 4 4个空格(在PyCharm
中按Tab
键,PyCharm
会自动转换为 4 4 4个空格),当条件为真时运行下面缩进的代码块
age = 18
if age >= 18:
# 缩进的代码都是 if 语句控制的代码, 当条件为真时被运行
print('我已经成年了')
print('我已经懂事了')
我已经成年了
我已经懂事了
age >= 18
条件成立,内部的两条打印语句会被运行
age = 16
if age >= 18:
# 缩进的代码都是 if 语句控制的代码, 当条件为真时被运行
print('我已经成年了')
print('我已经懂事了')
age >= 18
条件不成立,内部的两条打印语句不会被运行,没有任何输出
else语句
else
语句能够实现在if
语句的条件不成立时运行需要运行的代码else
语句不能单独存在
格式
if 条件:
条件为真时, 需要运行的代码
else:
条件为假时, 需要运行的代码
示例
age = 16
if age >= 18:
print('已经成年了')
print('可以去网吧上网了')
else:
print('未成年')
print('不可以去网吧上网')
未成年
不可以去网吧上网
elif语句
-
elif
语句能够实现在条件 1 1 1成立时运行条件 1 1 1的内部代码,在条件 2 2 2成立时运行条件 2 2 2的内部代码, ⋯ \cdots ⋯,在条件 n n n成立时运行条件 n n n的内部代码 -
elif
语句不能单独存在
格式
if 条件 1:
条件 1 为真时, 需要运行的代码
elif 条件 2:
条件 2 为真时, 需要运行的代码
elif 条件 3:
条件 3 为真时, 需要运行的代码
......
elif 条件 n:
条件 n 为真时, 需要运行的代码
else:
以上条件都不满足时, 需要运行的代码
运行流程
- 当条件
1
1
1成立时,运行条件
1
1
1的内部代码,然后整个
if
语句结束运行,不会再对下面的条件进行判断 - 当条件 1 1 1不成立时,对条件 2 2 2进行判断,……
- 当判断到条件
n
n
n时,如果条件
n
n
n仍然不成立,则运行
else
的内部代码
示例
score = 100
if 90 <= score <= 100:
print('本次考试, 等级为 A')
elif 80 <= score < 90:
print('本次考试, 等级为 B')
elif 70 <= score < 80:
print('本次考试, 等级为 C')
elif 60 <= score < 70:
print('本次考试, 等级为 D')
elif 0 <= score < 60:
print('本次考试, 等级为 E')
else:
# 如果分数不在 0 ~ 100 之间, 则认为分数有误
print('分数有误...')
本次考试, 等级为 A
else
语句不是必须的,根据实际情况决定是否添加,如果所有条件满足时做的事情很明确,没有所有条件都不满足的情况,此时就不用添加
if嵌套
if
语句内部可以嵌套if
语句
格式
if 条件 1:
条件 1 为真时, 需要运行的代码
if 条件 2:
条件 2 为真时, 需要运行的代码
else:
条件 2 为假时, 需要运行的代码
else:
条件 1 为假时, 需要运行的代码
示例
jiajia_age = 18
boy_age = 16
if jiajia_age == 18:
print('我刚满 18 岁~~~')
if boy_age < 18:
print('不能追我, 因为他没有满到 18 岁~~~')
else:
print('可以追我~~~')
我刚满 18 岁~~~
不能追我, 因为他没有满到 18 岁~~~