• 三、内存管理、数据类型、基本运算符、流程控制


    一、内存管理

    1、Cpython解释器的垃圾回收机制

        什么是垃圾?

          当一个值身上没有绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾

        引用计数增加

          age=18   18的引用计数等于1

          x=age      18的引用计数等于2

        引用计数减少

          age=19    18的引用计数等于1

          del    x      18的引用计数等于0

    2、变量值的三个特征

        id:反映的是内存地址

        type:数据类型

        值:表示事物的某种状态

      总结:id相同,值一定相同

                值相同,id可以不同

    3、is 与 ==

        ==:值是否相等;

        is:id是否相等。

    4、可变类型与不可变类型

        可变类型:值改变,id不变,证明就是在改变原值;

        不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型。

    二、数据类型的基本使用

    1、数字类型

        a、整型 int

             作用:用来记录年龄、等级、各种号码状态

             age=10   相当于   age=int(10)

        b、浮点型  float

             作用:用来记录身高、体重、工资状态

             定义:salary=3.1    相当于   salary=float(3.1)

    2、字符串类型 str

        作用:用来记录描述性质状态,比如名字、性别

        定义:单引号(’‘),双引号(”“),三引号("""  """):可以写入多行内容

        x='abc'  相当于  x=str('abc')​

        print('abc'+'def')  ----->'abcdef'              #仅限于str类型直接相加

        print('abc' *3)​​  ----->'abcabcabc          #  *的只能是数字

    3、列表类型list

        作用:​用来记录多个值,用索引对应值,索引反应的是位置

        定义:​在[]内用逗号分隔开多个任意类型的值

    4、​字典dict

        作用:用来记录多个值,用key对应value,其中key对value有描述性的功能

        定义:在{}内,用逗号分隔开多元素,每一个元素都是key:value的形式​,其中value可以是任意类型,而key通常应该是str类型

    5、布尔类型(bool):True   False

        所有数据类型自带布尔值

        布尔值为假的数据类型:0,   None,   空​。

        print(bool([]))、print(bool(’‘))​、print(bool(None) -----> False

    6、None类型

        print(type(None))​------->None类型

    三、​基本运算符

    1、常量​

         ​纯大写字母命名常量名,如:AGE_OF_OLDBOY=18

         常量的值是可以改变的,如:AGE_OF_OLDBOY=19

    2、基本运算符

        (1)、算术运算​

            +、-、*、/​

    ​        print(10/3)      精度float

            print(10//3)    取整

            print(10**2)​    平方

        (2)、逻辑运算​

            a、增量赋值

                 age=18

                 age+=1

                 print(age)​

            b、交叉赋值

               x =10

                y=20  ​

               # temp=x,

                # x=y

                # y=temp​

                x,y=y,x​

                print(x,y)​

            ​​c、链式赋值 

                 # x=10​

                 # y=x

                 # z=y​  ​

                 x=y=z=10​

            d、解压赋值

                 l=[1.1,2.2,3.3,4.4,5.5]​

                 a,b,c,d,e=l​

                 print( a,b,c,d,e)​

                  a,b,*_=l                       #取前两个值

                   print(a,b)

                    a,*_,b=l                     #取第一个和最后一个值

                     print(a,b)​

                     *_,a,b=l                     #取最后两个值

                      print(a,b)​

    四、流程控制​

    1、if 判断​

        (1)if 条件:

                        代码1 

                        代码2

                         代码3

                          ......​

        (2)if 条件:

                        代码1 

                        代码2

                         代码3

                          ......​

                  else:

                        代码1 

                        代码2

                         代码3

                          ......​

        (3)​if  条件1:

                        代码1 

                        代码2

                         代码3

                          ......​

              elif  条件2:

                        代码1 

                        代码2

                         代码3

                          ......​

           elif  条件3:

                        代码1 

                        代码2

                         代码3

                          ......​

                  else:

                        代码1 

                        代码2

                         代码3

                          ......​

     2、while循环:条件循环

            while条件:

                       代码1

                        代码2​

                        代码3

                        .........​

        结束循环的方式​

            (1)while+break:break代表结束本层循环​

            (2)改条件的方式tag=True​

                    while tag:

                             代码块

                              tag=False​

                              break

    eg:​​

                    tag=True

    ​                 while tag:

                             i = 0

    ​                         while i<<span se-mark="1">3: 

                                     inp = input('请输入年龄>>>') 

                                     i = i + 1

    ​                                 if inp =='10': 

                                     print('恭喜您猜对了') 

                                     tag=False 

                                     break 

                             else: 

                                     inp1=input('还想继续玩吗?y?>>') 

                                     if inp1=='y': 

                                     continue

            (3)while+continue:     continue​​表示结束本次循环,直接进入下一次

      while+else​结合

      while 条件:

                 pass

        else​:

                 print(‘else子代码块只有在while循环没有被break打断的情况下才会执行’)​

      3、for循环

             l=['a','b','c']

             for i in l:

                     print(i)

             dic={'x':111,'y':222,'z':333}

             for j in dic:

            print(j,dic[j])

           while循环称之为条件循环,循环的次数取决于条件何时为False,它的取值依赖于索引

           l=['a','b','c']

           i=0

           while i

           print(i,l[i])

           i+=1

           for循环取值不依赖于索引,像无序的数据类型如对字典取值很方便,循环的次数取

    决于数据包含的元素的个数

          专门用来取值,在取值方面比while循环更强大,以后但凡用到循环取值的场景,都应

    该用for循环

          range:    python2以列表形式表现,很消耗内存,相当于给一篮子鸡蛋

                        python3中相当于给一只鸡

         for i in range(3):   取0、1、2的值

        print(i)

      

    for+break

    eg:

    names=['egon','kevin','alex','hulaoshi']

    name in names:

              if nfor ame=='alex':break

              print(name)           #结果egon,kevin

    for+continue

    eg:

      names=['egon','kevin','alex','hulaoshi']

      for name in names:

      if name=='alex':continue

      print(name)           #结果egon,kevin,hulaoshi

    for+else :  

              else子代码块只有在for循环没有被break打断的情况下才会执行’

    for循环嵌套​

    换行符:

      print('aaa',end=' ')换行

      print('aaa',end='')

      print('bbb',end='')取消换行

  • 相关阅读:
    CF704D Captain America 上下界网络流
    CF241E Flights 差分约束
    CF1063F String Journey DP、SAM、线段树
    AGC028E High Elements 贪心、DP、线段树
    Solution -「CF 623E」Transforming Sequence
    Solution -「十二省联考2019」春节十二响
    最大团-最小度不等式
    「Lagrange 插值」学习笔记
    Solution -「NOI.AC 省选膜你赛」union
    Solution -「NOI.AC 省选膜你赛」T2
  • 原文地址:https://www.cnblogs.com/lanlan999/p/9994029.html
Copyright © 2020-2023  润新知