【python基础】第06回 运算符和流程控制 1

本章内容概要

1.运算符

2.流程控制

本章内容详解

1.运算符

什么是运算符?
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+“

1.1 算数运算符

* ** // % == != 等 详情看上章
x = x + 1  # x += 1
x = x - 1  # x -= 1 

1.2 比较运算符

> < == >= <= != 等
x == y
x != y

1.3 赋值运算符

简单赋值
x +=y  等效于 x = x + y
x -=y  等效于 x = x - y
链式赋值:
#赋值多个变量名
x = 10
y = x
z = y
链式赋值一行代码解决:x = y = z =10
交叉赋值:
m = 1
n = 2  
#m n 交换
q = m
m = n
n = q
交叉赋值一行代码解决:m,n = n,m
解压赋值:
a, b, c = [11, 22, 33]  # 遵循左右两边个数一致
a, *args = [1, 2, 3, 4, 5]  # 不遵循

1.4 逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False 
and 与
or 或
not 非
and 链接的多个条件必须都成立结果才成立(True)
or 链接的多个条件有一个成立结果就成立(True)
not 将条件取反(原本是对的就变成错的 如果是错的就变成对的)

       and

       可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

1 == 1 and 2 > 10 and 3!=6 and True and 10 < 2
# False

       or

       可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False

1 != 1 or 2==2 or False or 3 < 2 or 10 < 1
# True

        not

print(not True)
print(not False)
# False
# True

       混用and、or、not

# 三者如果混合使用 其实是有优先级的!!!用()来区分优先级
3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3  # 不合理的编写方式
# 如果需要三者混合使用 那么应该加上括号来区别优先级
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)  # 合理

1.5 成员运算符

in                在什么什么之内
not in            不在什么什么之内
复制代码
例:    
l1 = ['jason', 'kevin', 'tony', 'oscar', 'jerry'] # 判断某个人名在不在班级学生名单中(判断某个个体在不在某个群体内) # print('jason' in l1) # True # print('ja' in l1) # False # print('jason kevin' in l1) # False '''列表在做成员运算的时候最小单位是数据值整体 不能再拆分也不能合并''' # s1 = 'hello big baby!' # print('h' in s1) # True # print('he' in s1) # True # print('hell' in s1) # True # print('hello' in s1) # True '''字符串在做成员运算的时候最小单位是单个字符 也可以增加字符个数''' d1 = {'name': 'jason', 'pwd': 123} print('jason' in d1) # False print(123 in d1) # False print('name' in d1) # True print('pwd' in d1) # True '''字典在做成员运算的时候只有K会参与运算 V默认不暴露给外界'''
复制代码

1.6 身份运算符

is      判断数据值的内存地址是否一致
==     判断数据值得值是否一致 地址无所谓
id()   该方法会返回一串数字 相当于内存地址
复制代码
例:  
l1 = [11, 22, 33, 44] l2 = [11, 22, 33, 44] print(id(l1)) # 2768135836544 print(id(l2)) # 2768135831424 print(l1 == l2) # True 只判断值 print(l1 is l2) # False 判断内存地址 """ 值相等 内存地址可能不等 内存地址相等 值肯定相等(单次程序中) """
复制代码
复制代码
python内存优化
    # l1 = 10
    # l2 = 10
    # print(id(l1))  # 140707857893312
    # print(id(l2))  # 140707857893312
    """python针对数据量比较小的并且经常使用的数据会做内存优化:小整数池"""
    l1 = 9999999
    l2 = 9999999
    print(id(l1), id(l2))  # 1271940823728 1271940823728
    """有时候IDE编辑工具也会做更多的优化处理(上述代码使用解释器直接运行 地址不一样)"""
复制代码

2.流程控制

2.1 流程控制理论

流程控制的概念

        本质就是事物的执行流程 事物的执行流程总共就三种

        1.顺序结构

                   从上往下依次执行,之前我们写的代码都是顺序结构

        2.分支结构

                   根据条件的不同执行不同的代码,用到if判断

        3.循环结构

                   根据条件的判断绝对是否一直做某件事,用到while与for

2.2 流程控制结构

复制代码
1.python中使用代码的缩进来表示代码的从属关系
    缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号)
2.缩进量其实没有要求 只要缩进了即可
    但是为了美观 一般推荐使用四个空格
3.并不是所有的代码都可以拥有子代码
    if关键字 else关键字  elif关键字 ( elif else不能单独使用)
4.同属于一个父代码的多行子代码应该保证相同的缩进量
    如果代码缩进了 那就必须往上找一个缩进量比它小的代码作为父代码
        这个父代码如果可以拥有子代码 那么没有问题  不可以则直接报错
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
复制代码

2.2.1 顺序结构

 从上往下依次执行,之前我们写的代码都是顺序结构

流程图

 

2.2.2 分支结构

       在python中如果想要编写分支结构 那么需要使用关键字if,分支结构就是根据条件判断的真假去执行不同分支对应的子代码

2.2.2.1 单if 分支
if 条件:
          条件成立执行执行的代码(子代码)
# 条件可以是布尔值 也可以是表达式
# 判断的条件可以是一个 也可以是有逻辑运算符连接的多个
例:
  # 1.定义女人的年龄
      age = 28
  # 2.判断女人的年龄
      if age < 30:
          print('小姐姐你好呀!!!')
2.2.2.2 if...else 分支
if 条件:
        条件成立之后执行的子代码
else:
        条件不成立执行的子代码
# 判断的条件可以是一个 也可以是由逻辑运算符连接的多个
复制代码
例:
#
模拟用户登录功能 # 1.获取用户名和密码 name = input('name>>>:') password = input("password>>>:") # 2.判断用户名和密码是否正确(目前只能写死) # if name == 'zhang' and password == 123: # python中不同数据类型之间无法直接做比较 if name == 'zhang' and password == '123': print("贵宾一位") else: print("滚蛋")
复制代码

 流程图

2.2.2.3 if...elif...else 分支
复制代码
if...elif...else分支
    if 条件1:
        条件1成立执行的子代码
    elif 条件2:
        条件1不成立 条件2成立执行的子代码
    elif 条件3:
        条件1和2都不成立 条件3成立执行的子代码
    else:
        上述所有的条件都不成立执行的子代码
 # if elif else三者连用 永远只会走一个分支
 # elif 和 else都不能单独使用 必须结合if
复制代码
复制代码
例:
#
如果成绩大于90打印优秀 大于80打印良好 大于70打印一般 大于60打印及格 其他打印挂科 score = 92 if score > 90: print("优秀") elif score > 80: print("良好") elif score > 70: print("一般") elif score > 60: print("及格") else: print("挂科")
复制代码

 

 流程图

2.2.2.4 if的嵌套使用
复制代码
例:
# 在大街上看到一个漂亮的背影 上去要微信
# 如果要微信成功了 则邀请她去看电影(她可能拒绝 也可能接受)
# 如果接受了则继续吃饭 逛街 等待天黑!!!
# 1.先定义出各种条件
is_wechat = True
is_movie = True
is_agree = False
is_xxx = True
# 2.条件判断
if is_wechat:
    print('要微信成功了')
    if is_movie:
        print('要去看电影了 找个后排座位 视野好')
        if is_agree and True:
            print('吃饭 逛街 天黑了!!!')
        else:
            print('你个臭流氓!!!')
    else:
        print('看电影多无聊!!!')
else:
    print('你个癞蛤蟆!!!')
复制代码

 流程图

 作业

1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好

复制代码
# 1.定义女人年龄,身高,体重
age = 18
height = 180
weight = 90
is_beautiful = True
# 2.判断
if 18 <= age < 22 and height > 170 and weight < 100 and is_beautiful:
    print("表白")
else:
    print("阿姨好")
复制代码

2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''

复制代码
# 1.定义用户
name = input("请输入您的用户名>>>:")
# 2.判断
if name == 'jason':
    print("超级管理员")
elif name == 'tom':
    print("普通管理员")
elif name == 'jack' or name == 'rain':
    print("业务主管")
else:
    print("普通用户")
复制代码

3.编写用户登录程序

要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123

复制代码
# 先定义黑名单
black_name_list = ['jason', 'kevin', 'tony']
# 获取用户名
username = input("username>>:")
# 判断
if username not in black_name_list:
    password = input("password>>:")
    if username == 'zhang' and password == '123':
        print("登录成功")
    else:
        print("账号或密码错误")
else:
    print("你已加入黑名单")
复制代码

 

 

posted @   |相得益张|  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示