zoukankan      html  css  js  c++  java
  • day06-python可变与可变、条件、in、is、流程控制if

    今日测验

    1、简单描述定义一个变量x=10,在内存中的栈区域堆区的存放情况
           栈区:存放是变量名与内存地址的对应关系,所以可以简单理解为:变量名存内存地址
           堆区:存放的是变量值
    
           强调:只站在变量的名的角度去谈一件事情
               变量名的赋值(x=y),还有变量名的传参(print(x)),传递的都是栈区的数据
               ,而且栈的数据是变量名与内存地址的对应关系,或者说是对值的引用
    
               python是引用传递
    
               示例1:
                   x=10
                   y=20
                   x=y
               示例2:
                   l=[111,222,333]
                   l1=[22222222,333333333,4444444]
    
                   l2=l
    
       2、简述什么是直接引用、什么是间接引用
       3、简单描述python解释器垃圾回收机的引用计数、标记清除、分代回收
       4、写一段程序
       	接收用户输入的用户名、年龄、性别,然后选取最优格式化字符串的方式,按照如下
       	格式输出
    
       	我的名字是:xxx
       	我的年龄是:xxx
       	我的性别是:xxx
    
    
       	格式化输出
       	    %
       	    str.format()
       	    f''
    
      	5、算数运算符相关
      	    /
      	    //
      		用示例演示
      			取模运算
      			增量赋值
      			    age += 1 # age = age + 1
      			交叉赋值
      			    x,y=y,x
      			链式赋值
      			    x=y=z=10
      			解压赋值
      			    x,y,*_,z=[10,20,30,40,50]
      			    _,_,*m,_=[10,20,30,40,50]
    

    昨日知识补充

    l = [111, 222, 333]
    l2 = l  # 把l的内存地址给l2
    
    
    l[0] = 'balabla'
    print(l)
    
    print(l2)
    
    l2[1] = 4444444444444
    print(l2)
    print(l)
    
    del l2
    
    格式化输出
    print('my name is %s age is %s' % ('egon', 18))
    print('成功的概率 %s%% ' % (97,))
    
    """
    name:{}
    age:{}
    sex:{}
    """.format('egon', 18, 'male')
    
    """
    name:{x}
    age:{y}
    sex:{z}
    """.format(z='male', x='egon', y=18)
    
    format新增(了解)print('{x}=============='.format(x='开始执行'))  # 开始执行******
    print('{x:=<10}'.format(x='开始执行'))  # 开始执行******
    print('{x:=>10}'.format(x='开始执行'))  # 开始执行******
    print('{x:=^10}'.format(x='开始执行'))  # 开始执行******
    
    四舍五入
    # 精确到小数点后3位,四舍五入,结果为:1232132.124
    print('{salary:.3f}'.format(salary=1232132.12351))
    
    
    x = 'egon'
    y = 18
    res = f'name:{x} age {y}'
    print(res)
    
    
    x = 'egon'
    y = 18
    res = f'name:{{{x}}} age {y}'
    print(res)
    
    了解f的新用法:{}内的字符串可以被当做表达式运行
    res = f'{10+3}'
    print(res)
    
    f'{print("aaaa")}'
    
    

    今日内容

    1:可变不可变类型
    
    2、什么是条件?什么可以当做条件?为何要要用条件?
        显式布尔值:True、False
        隐式布尔值:所有数据类型,其中0、None、空为假
    
    3:逻辑运算符:用来
        # not、 and 、 or
        # 区分优先级:not > and > or
    
    4、成员运算符
    
    5、身份运算符
    
    6、流程控制之if判断
    

    今日内容详解

    可变不可变类型

    可变类型:值改变,id不变,证明改的是原值,证明原值是可以被改变的
    不可变类型:值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原值是不可以被修改的
    

    验证

    int是不可变类型

    x = 10
    print(id(x))
    x = 11  # 产生新值
    print(id(x))
    结果是变量的id被改变了
    

    float是不可变类型

    x = 3.1
    print(id(x))
    x = 3.2
    print(id(x))
    

    str是不可变类型

    x = “abc”
    print(id(x))
    x = ‘gggg’
    print(id(x))

    小结:int、float、str都被设计成了不可分割的整体,不能够被改变
    

    list是可变类型

    l = ['aaa', 'bbb', 'ccc']
    print(id(l))
    l[0] = 'AAA'
    print(l)
    print(id(l))
    

    dict

    dic = {'k1': 111, 'k2': 222}
    print(id(dic))
    dic['k1'] = 3333333333
    # print(dic)
    print(id(dic))
    

    bool不可变

    关于字典补充:

    定义:{}内用逗号分隔开多key: value,
    其中value可以是任意类型
    但是key必须是不可变类型
    
    dic = {
        'k1': 111,
        'k2': 3.1,
        'k3': [333, ],
        'k4': {'name': 'egon'}
    }
    
    dic = {
        2222: 111,
        3.3: 3.1,
        'k3': [333, ],
        'k4': {'name': 'egon'}
    }
    print(dic[3.3])
    
    dic = {[1, 2, 3]: 33333333}
    dic = {{'a': 1}: 33333333}
    

    条件

    什么是条件?什么可以当做条件?为何要要用条件?
    

    第一大类:显式布尔值

    条件可以是:比较运算符
    age = 18
    print(age > 16)  # 条件判断之后会得到一个布尔值
    
    条件可以是:True、False
    is_beautiful = True
    print(is_beautiful)
    

    第二大类:隐式布尔值,所有的值都可以当成条件去用

    其中0、None、空(空字符串、空列表、空字典) =》代表的布尔值为False,其余都为真
    

    逻辑运算符

    not、and、or的基本使用

    not:就是把紧跟其后的那个条件结果取反
    ps: not与紧跟其后的那个条件是一个不可分割的整体
    print(not 16 > 13)
    print(not True)
    print(not False)
    print(not 10)
    print(not 0)
    print(not None)
    print(not '')
    
    and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真
    print(True and 10 > 3)
    
    print(True and 10 > 3 and 10 and 0)  # 条件全为真,最终结果才为True
    print(10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3)  # 偷懒原则
    
    or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True,
    两个条件都为False的情况下,最终结果才为False
    print(3 > 2 or 0)
    print(3 > 4 or False or 3 != 2 or 3 > 2 or True)  # 偷懒原则
    

    优先级not > and > or

    ps:
    如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则)
    如果是混用,则需要考虑优先级了
    
    res = 3 > 4 and not 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3
    print(res)
    
    #       False                 False              False
    res = (3 > 4 and (not 4 > 3)) or (1 == 3 and 'x' == 'x') or 3 > 3
    print(res)
    
    
    res = 3 > 4 and ((not 4 > 3) or 1 == 3) and ('x' == 'x' or 3 > 3)
    print(res)
    
    

    成员运算符和逻辑运算符

    成员运算符

    print("egon" in "hello egon")  # 判断一个字符串是否存在于一个大字符串中
    print("e" in "hello egon")  # 判断一个字符串是否存在于一个大字符串中
    
    print(111 in [111, 222, 33])  # 判断元素是否存在于列表
    
    判断key是否存在于字典
    print(111 in {"k1": 111, 'k2': 222})
    print("k1" in {"k1": 111, 'k2': 222})
    
    not in
    print("egon" not in "hello egon")  # 推荐使用
    print(not "egon" in "hello egon")  # 逻辑同上,但语义不明确,不推荐
    

    身份运算符

    is  # 判断的是id是否相等
    

    流程控制之if判断

    print(1)
    print(2)
    print(3)
    if 条件:
        代码1
        代码2
        代码3
    print(4)
    print(5)
    '''
    语法1:
    if 条件:
        代码1
        代码2
        代码3
    
    '''
    age = 60
    is_beautiful = True
    star = '水平座'
    
    if age > 16 and age < 20 and is_beautiful and star == '水平座':
        print('我喜欢,我们在一起吧。。。')
    
    print('其他代码.............')
    
    
    '''
    语法2:
    if 条件:
        代码1
        代码2
        代码3
    else:
        代码1
        代码2
        代码3
    '''
    
    age = 60
    is_beautiful = True
    star = '水平座'
    
    if age > 16 and age < 20 and is_beautiful and star == '水平座':
        print('我喜欢,我们在一起吧。。。')
    else:
        print('阿姨好,我逗你玩呢,深藏功与名')
    
    print('其他代码.............')
    
    
    '''
    语法3:
    if 条件1:
        代码1
        代码2
        代码3
    elif 条件2:
        代码1
        代码2
        代码3
    elif 条件2:
        代码1
        代码2
        代码3
    '''
    score = 73
    if score >= 90:
        print('优秀')
    elif score >= 80 and score < 90:
        print('良好')
    elif score >= 70 and score < 80:
        print('普通')
    
    改进
    score = input('请输入您的成绩:')  # score="18"
    score = int(score)
    
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('普通')
    
    
    '''
    语法3:
    if 条件1:
        代码1
        代码2
        代码3
    elif 条件2:
        代码1
        代码2
        代码3
    elif 条件2:
        代码1
        代码2
        代码3
    ...
    else:
        代码1
        代码2
        代码3
    '''
    score = input('请输入您的成绩:')  # score="18"
    score = int(score)
    
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('普通')
    else:
        print('很差,小垃圾')
    
    print('=====>')
    
    
    '''
    if嵌套if
    '''
    age = 17
    is_beautiful = True
    star = '水平座'
    
    if 16 < age < 20 and is_beautiful and star == '水平座':
        print('开始表白。。。。。')
        is_successful = True
        if is_successful:
            print('两个从此过上没羞没臊的生活。。。')
    else:
        print('阿姨好,我逗你玩呢,深藏功与名')
    
    print('其他代码.............')
    
  • 相关阅读:
    GDUFE ACM-1087
    背包九讲
    OJ4TH|Inverse number:Reborn
    OJ4TH|Let's play a game
    GG第四次作业
    OpenCV(3)其他常用数据类型
    OpenCV学习(2)读取视频和摄像头
    OpenCV(1)读写图像
    GG第三次作业
    GG第二次作业
  • 原文地址:https://www.cnblogs.com/zdw20191029/p/14553367.html
Copyright © 2011-2022 走看看