v4_Python-流程控制 if判断

Python-流程控制 if判断

目录:

  • Python-流程控制 if判断
    • 一、可变与不可变类型
    • 二、条件
    • 三、逻辑运算符
      • not
      • and
      • or
      • 优先级
    • 四、成员运算符
    • 五、身份运算符
    • 六、if判断
      • 语法1
      • 语法2
      • 语法3
      • if嵌套if

一、可变与不可变类型

可变类型:存储空间保存的数据允许被修改,这种数据就是可变类型。值(堆区)改变,id不变,证明改的是原值,证明原值是可以被改变的。

常见的可变类型:

  • 列表 list
  • 字典 dict

不可变类型:存储空间保存的数据不允许被修改,这种数据就是不可变类型。
值改变,id也变了,证明是产生了新的值,压根没有改变原值,证明原值是不可以被修改的。

常见的不可变类型:

  • 数字类型 int, bool, float, complex, long
  • 字符串 str
  • 元组 tuple

注:

  1. int、float、str在Python中都被设计成了不可分割的整体,不能够被改变。所有的赋值操作都是在栈区内产生了一个新的值捆绑给变量名,只要是赋值,就一定会产生新的空间,与变量进行绑定。
  2. 字典:{}内用逗号分隔开多个key:value,其中value可以是任意类型(比如整型int、浮点型float、列表list、字典dict等),但是key必须是不可变类型。

二、条件

条件可以是比较运算符,可以是True、False,条件判断后会得到一个布尔值。

隐式布尔值:所有的值都可以当成布尔值(条件)去使用。其中0、None、空(空字符串、空列表、空字典)代表的布尔值为False,其余的都是True。

三、逻辑运算符

not

not就是把紧跟其后的那个条件结果取反,且not与紧跟其后的那个条件是一个不可分割的整体。

示例:

age = 16
print(not age > 13)
print(not age < 12)
#输出结果如下
False
True

and

and:逻辑与,and用来连接左右两个条件(条件1 and 条件2),两个条件同时为True,最终结果才为True。当多个and语句同时出现时,所有条件全为真,最终结果才为真。有一个条件为假,最终结果就为假。

示例:

print(True and 10 > 3)
print(True and 10 > 3 and 10)
print(0 and 10 > 3 and 10 and 1 > 3 and 4 == 4 and 3 != 3)
#输出结果如下:
True
10 
0

or

or:逻辑或,or用来连接左右两个条件,两个条件但凡有一个为True,最终结果就为True。两个条件都为False的情况下,最终结果才为False。

示例:

print(3 > 2 or 0)
print(10 or 3 != 2 or 3 > 2 or True)
#输出结果如下
True
10

优先级

not > and > or

如果单独就只是一串and连接,或者说单独就只是一串or连接,按照从左往右的顺序依次运算即可。

如果是混用,则需要考虑优先级。

示例:

res = 3 > 4 and not 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3
#上边代码块等价于下边代码块
res = (3 > 4 and (not 4 > 3)) or (1 == 3 and 'x' == 'x') or 3 > 3
print(res)
#输出结果如下
False

括号的优先级或改变逻辑运算的,一般混用运算时,先把not的语句用括号括起来,然后把and两端连接的两个语句用括号括起来,最后进行运算即可。

四、成员运算符

成员运算符in适用于字符串,用于判断一个子字符串是否存在于一个大字符串中。

示例:

print('egon' in 'hello egon')
#输出结果如下
True
#判断元素是否存在于列表
print(111 in [111,222,333])
#输出结果如下:
True
#判断key是否存在于字典
print(111 in {
     'k1':111, 'k2':222})
print('k1' in {
     'k1':111, 'k2':222})
#输出结果如下
False
True
#notin
print('egon' not in 'hello egon')
print(not 'egon' in 'hello egon')
#逻辑上两者相同,但是代码块1语义更明确,推荐使用。
#输出结果如下
False
False

五、身份运算符

身份运算符用于比较两个对象的存储单元。

is是判断两个标识符是不是引用自一个对象,即值的id是否相等。

is not是判断两个标识符是不是引用自不同对象,即值的id是否不相等。

示例:

x = 10
y = 10
print(x is y)
#输出结果如下
True

六、if判断

语法1

if 条件:
    代码1
    代码2
    代码3

示例:

age = 18
is_beautiful = True
star = '水瓶座'
if 16 < age < 20 and is_beautiful and star == '水瓶座':
    print('yes')
print('其他代码。。。。。。。。。。')
#输出结果如下
yes
其他代码。。。。。。。。。。

语法2

if 条件:
    代码1
    代码2
    代码3
else:
    代码1
    代码2
    代码3

else在if条件不成立时才能运行

示例:

age = 18
is_beautiful = True
star = '水瓶座'
if 16 < age < 20 and is_beautiful and star == '水瓶座':
    print('yes')
else:
    print('no')
print('其他代码。。。。。。。。。。')
#输出结果如下
yes
其他代码。。。。。。。。。。

语法3

if 条件1:
    代码1
    代码2
    代码3
elif 条件2:
    代码1
    代码2
    代码3
elif 条件3:
    代码1
    代码2
    代码3
elif 条件4:
    代码1
    代码2
    代码3
...
else:
    代码1
    代码2
    代码3

示例:

score = int(input('请输入您的成绩:'))

if score >= 90:
    print('优秀')
elif score >= 80:
    print('良好')
elif score >=70:
    print('普通')
else:
    print('很差,小垃圾')

运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

if嵌套if

示例:

age = 18
is_beautiful = True
star = '水瓶座'

if 16 < age < 20 and is_beautiful and star == '水瓶座':
    print('yes')
    is_successful = True
    if is_successful:
        print('success')
else:
    print('no')

print('其他代码。。。。。。。。。。')
#输出结果如下
yes
success
其他代码。。。。。。。。。。

v4_Python-流程控制 if判断_第1张图片
小v的第四篇…

你可能感兴趣的:(笔记,python)