测开不得不会的python条件判断语句if

liftword22小时前技术文章1


学习目录

1. 条件语句结构

2. 布尔值的判断

3. not 表达式表示相反逻辑

4. == 和is判断的区别

5. 三元表达式(三元运算)

6. 使用all() 和any()函数进行条件判断

7. 使用and 和or判断

8. if __name__ == '__main__'的含义

python的条件语句是指当表达式判断为True(bool值)时执行代码块。


条件语句结构

if 表达式: #表达式为True时 执行代码块1

代码块1

elif 表达式: #表达式为True时 执行代码块2

代码块2

elif 表达式: #表达式为True时 执行代码块3

代码块3
....支持多个elif表达式

else: #以上表达式都为False时 执行代码块n

代码块n

以上结构中elif和else条件语句为非必须。

布尔值的判断

条件表达式判断的是布尔值为True或者False,可以使用函数bool()判断对象的布尔值。

#数字0的布尔值
print(bool(0))
#打印结果
False
#数字1的布尔值
print(bool(1))
#打印结果
True

一些内置对象的布尔值说明:

  • 布尔值为False: 数字0,None,False,空列表[],空字典{},空集合set(),空元组()
  • 布尔值为True: 非数字0,True,非空列表,非空字典,非空集合set(),非空元组(),自定义的类和实例

自定义的类和实例的布尔值为True:

class Fruit():
    def __init__(self,name,color):
        self.name = name
        self.color = color

fruit = Fruit('apple','red')
print(f'自定义的class 布尔值为{bool(Fruit)}')
print(f'自定义的实例 布尔值为{bool(fruit)}')
#打印结果
自定义的class 布尔值为True
自定义的实例 布尔值为True

not 表达式表示相反逻辑

举例:当表达式为False时,使用not+表达式,if条件判断为True,会执行代码块1

if not 表达式:
	代码块1

== 和is判断的区别

== 判断的是两个对象的值是否相等,而is判断的是对象的内存地址是否一致。

举例:变量A和B都为一个空列表

A = []
B = []
#使用==判断
if A == B:
	print('A等于B')
#打印结果为True 表示A和B的值一致
True

#使用is判断
print(f'A的内存地址 {id(A)}')
print(f'B的内存地址 {id(B)}')
if A is B:
	print('A和B的内存地址是同一个')
else:
	print('A和B的内存地址不是同一个')
#执行结果如下 表示A和B的内存地址不是同一个 表达式为False
A的内存地址 4509789696
B的内存地址 4509759936

三元表达式(三元运算)

是一个简化的条件表达式,结构如下:expression为True时执行代码块1,否则执行代码块2

[代码块1] if [expression] else [代码块2]

A = 15
B = 15
if A == B:
	C=A+B
else:
	C=A-B

以上条件语句可以简化为:

C = A+B if A==B else A-B

使用all() 和any()函数进行条件判断

all() 函数的语法 :all(iterable) 参数为可迭代对象

  • 对于迭代对象的的所有值,如果 bool()的结果都为 True,则返回 True,如果可迭代对象为空,返回 False

any() 函数的语法 :any(iterable) 参数为可迭代对象

  • 对于迭代对象的的所有值,如果 bool()的结果任意一个为 True,则返回 True,如果可迭代对象为空,返回 False

举例:列表A有四个数字,判断列表的数字是否被2整除,只有数字2和4被2整除(列表表达式请学习python列表介绍

listA = [1,2,3,4]
#通过前面文章提到的列表表达式 生成新列表传入all和any函数
print(f'执行all()函数的结果: {all([i%2 ==0 for i in listA])}')
print(f'执行any()函数的结果: {any([i%2 ==0 for i in listA])}')
#结果如下
执行all()函数的结果: False
执行any()函数的结果: True

使用and 和or判断

有两个表达式A和B

A和B都为True时 A and B 结果为True
A和B有一个为False时 A and B 结果为False
A和B有一个为True时 A or B 结果为True
A和B都为False时 A or B 结果为False

A = True
B= False
if A and B:
	print(f'A和B都为True时 A and B 结果为True')
else:
	print(f'A和B有一个为False时 A and B 结果为False')
#打印结果:
A和B有一个为False时 A and B 结果为False

if A or B:
	print(f'A和B有一个为True时 A or B 结果为True')
else:
	print(f'A和B都为False时 A or B 结果为False')
#打印结果
A和B有一个为True时 A or B 结果为True

if __name__ == '__main__'的含义

python模块(单个的.py文件是一个模块)中使用if __name__ == '__main__'时,指只有直接运行该py文件时if判断才会生效,而当该模块被其他模块import导入时则不会生效。

 
定一个test.py文件,文件内容如下:
print(f'test.py的属性__name__值为: {__name__}')
if __name__ == '__main__':
	print('执行该内容')

#运行test.py 结果:  if __name__ == '__main__'判断为True
test.py的属性__name__值为: __main__
执行该内容


当test.py同级目录的另一个文件test1.py通过import导入test.py时:
test1.py文件内容如下:
import test

#运行test1.py的结果:
test.py的属性__name__值为: test
解释:if __name__ == '__main__'判断为False,
因为__name__值变成了文件名test,而不再是__main__


共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。


----感谢读者的阅读和学习,谢谢大家。

相关文章

python 判断变量是否是 None 的三种写法

代码中经常会有变量是否为None的判断,有三种主要的写法:第一种是 if x is None ;第二种是 if not x: ;第三种是 if not x is None (这句这样理解更清晰 if...

简单学Python——关键字2——True和False

True和False是Python中的两个关键字,是布尔类型,分别用于表示真和假。1、True和False表示真和假的例子:#将1==2的结果赋值给了x x=1==2 #将1==2的结果赋值给了y y...

Python基础:pass语句知识详解(python中pass)

欢迎你来到站长在线的站长学堂学习Python知识,本文分享的是《pass语句知识详解》。pass的中文翻译:通过;走过;沿某方向前进;向某方向移动;及格;合格;通行证。在Python中表示空的语句,包...

Python的条件判断(python三个条件判断)

计算机之所以能够执行众多自动化任务,关键在于它具备自行进行条件判断的能力。例如,当输入用户年龄后,依据不同的年龄来打印相应内容,在 Python 程序里,这可以通过 if 语句来实现,示例如下:age...

用python编写判断输入是否为整数的程序

最近在自学python,写了两个小程序,大家帮个看看有没有更好的方式来编写,没学过编程,学起来有点懵。想实现一个功能,就是判断外部输入是否为整数,就是判断是不是数字,要是输入的其他的返回“您输入的信息...

python编程实践:如何将变量正确设置为空?

在Python中,变量是非常重要的一部分。它们用于储存数据,来支持程序的运行。当我们在编程时,将来可能会遇到一个问题:如何将变量正确设置为空?什么是变量?在Python中,变量是程序员用来储存数据的一...