数据类型 运算符

*爱你&永不变心* 提交于 2020-02-26 03:07:09

IDE集成开发环境(pycharm)

  • ctrl+D (快速复制)
  • shift+回车直接跳到下一行
  • ctrl+z回到上一步

基本数据类型的使用

  • 为何数据要区分类型?
    数据类型值的是变量值的类型,变量值之所区分类型,是因为变量值是
    用来记录事物状态的,而事物的状态有不同的种类,对应着,也必须使用
    不同类型的值去记录它们

    一、数字类型

    1.整型int

    作用:记录年龄、等级、数量

    定义:age=18

    使用:数学运算与比较运算

    print(10/3)
    print(10>3)

    2.浮点型float

    作用:记录薪资,身高,体重

    定义:salary=3.1

    使用:数学运算与比较运算

     print(3.1 + 2)
     print(3.1 > 2)

    二、字符串str

    作用:记录描述性质的状态

    定义:在单引号\双引号\三引号中包含一系列字符name='egon'

    使用:

    msg='my name is "egon"'
    print(msg)
    • 接拼字符串
    x='hello'
    y='world'
    print(x+y)   # 一般不推荐使用该方式相加字符串,因为这并不是将x放入到Y的内存空间中,也是不是将y放入到x的内存空间中,而是又申请了一个内存空间将这两个值都加入,占用空间
    print(x+10)  #这个会报错,因为字符串只能跟字符串相加,而这是整型跟字符串相加
    # *
    print('egon'*10)  # 出现了10次egon

    (存不是目的,目的是取,字符串可以存多个值但是取出特别麻烦)

    三、列表类型list

    作用:按照位置记录多个同种属性的值(索引对应值,索引从0开始,代表的 就是位置),并且可以取出指定位置的某一个值

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

    #  0    1    2       3
    # l=[100,3.2,'aaa',['a','b',['d','e']]]
    # print(type(l))

    使用:

    # print(l[0])
    # print(l[2])
    # print(l[3][1])
    # print(l[3][2][1])
    # hobbies=['read','music','eat','sleep']
    
    
    # 取出第一个学生的第一个爱好
    # students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
    # print(students_info[0][2][0])

    四、字典类型dict

    作用:记录多个不同属性的值

    定义:在{}内用逗号分开个多个元素,每一个元素都由key:value组成# value就是我们存放的值,可以是任意类型,

    一个key唯一对应一个value,key应该对value有描述性的功能,所以key通常是str类型(key 通常是str类型,因为key是具有描述性的东西,而字符串是具有描述性)

    dic={'name':'egon','age':18,'gender':'male'}
    print(type(dic))

    使用:

    print(dic['name'])
    print(dic['age'])
    info={
        'name':'egon',
        'hobbies':['play','sleep'],
        'company_info':{
            'name':'Oldboy',
            'type':'education',
            'emp_num':40,
        }
    }
    print(info['company_info']['name'])
    #          0     1  2    3     4
    # emp_info=['egon',18,10,'male',1.81]
    # print(emp_info[0])
    # print(emp_info[1])
    # print(emp_info[2])
    # 对于不同属性的多个值列表虽然也能存,但是取值不方便
    所以以后存值要考虑取值
    如:以下
    # info={'name':'egon','age':18,'gender':'male'}
     info=[
         {'name':'egon','age':18,'sex':'male','height':1.81,'weight':70},
    #     第二个学生的信息,
    #     第三个学生的信息,
    。。。。。。多个学生的值
    
    # ]
    同种属性用列表来存(如全班的学生信息,同样都是信息),不同属性用字典来存,但是不同属性如果属性不多可以存列表,如果一个人的信息可以用字典,取值方便(如个人的信息)

    (只要有索引就是有序,字典是无序)

    五、布尔类型bool:True,False

    作用:用于判断

    定义:

    x=True
    y=False
    print(type(x))
    print(type(y))
    print(10 > 11)
    print(10 == 10)

    强调:所有的值都自带布尔值,其中0、None、空布尔值为False,其余都为True

    # if []:
    #     print('ok')
    # else:
    #     print('不 ok')

    输入输出

    1.接受用户输入

    # name=input('请输入你的用户名: ') # name='egon'
    # print(name)

    2.格式化输出

    # name=input('username>>> ')
    # age=input('age>>> ')
    
    # print('my name is xxx my age is xxx')
    # print('my name is '+name+' my age is '+age)
    # print('my name is %s my age is %s' %(name,age))
    
    
    # %d只能接收数字
    # print('my age is %d' %10)
    # print('my age is %d' %'aaaa')
    # print('my age is %d' %10.1)
    
    # print('my age is %s' %'aaa')
    # print('my age is %s' %10)
    # print('my age is %s' %['a',1])

    了解

    在python3中只有一个input:input会将用户输入的任何内容都存成字符串类型

    x=input('>>>>: ') # x='[1,2,3]'
    print(x,type(x))

    在python2中有两种接收用户输入的机制

    raw_input:等同于python3的input

    input:要求输入者必须输入的一个明确的数据类型,输入什么类型就存成什么类型

运算符

  • 算数运算符

    print(10 / 3)
    print(10 // 3)
    print(10 % 3)
    print(10 ** 2)
  • 比较运算符

    print(10 == 10)
    print(10 != 10)
    print(10 > 3)
    print(10 < 3)
    print(10 >= 10)
    print('egon' == 'egon')
    # 了解:
    # x='abcdef'
    # y='abcz'从第一个开始比,比不出来才往后比a跟a,比不出来才b跟b比,然后c跟c比,然后d跟z比才比较出来
    # print(x > y)
    # l1=[2,'abc',3]
    # l2=[2,'3'] 此时的3 是字符串,字符串可以跟字符串相比,可以对照字符编码
    # print(l2 > l1)
    # l1=[2,'abc',3]
    # l2=[2,'3']
    # print(l2 > l1)
  • 赋值运算符

    # 3.1 增量赋值
    # age = 18
    # age += 1  # age=age+1
    # print(age)
    # age-=1 # age=age-1
    # print(age)
    
    # 3.2 交叉赋值
    # x=11
    # y=22
    
    # temp=x
    # x=y
    # y=temp
    # 上述三行代码可以合并为下面这一行
    # x,y=y,x
    # print(x,y)
     3.3 链式赋值
    # x=10
    # y=x
    # z=y
    
    # x=y=z=10
    # print(id(x),id(y),id(z))
    
    # 3.4 解压赋值
    l=['a','b','c','d','e']
    # x=l[0]
    # y=l[1]
    # z=l[2]
    # m=l[3]
    # n=l[4]
    
    # 等号左边的变量名必须与右面所包含的值一一对应
    # x,y,z,m,n=l
    # print(x,y,z,m,n)
    
    # x,y,*_,z=l
    # print(x,y,z)
    
    # l=['a','b','c','d','e']
    #
    # x,y,x,m,n=l
    # x='a'
    # y='b'
    # x='c'
    # m='d'
    # n='e'
    #
    # print(x,y,x,m,n)
    
    # l=['a','b','c','d','e']
    # x,y,*_=l
    # print(_)
  • 逻辑运算符

    # and:逻辑与,用来连接左右两个条件,在左右两个条件同时为True的情况下,最终结果才为True
    # print(10 < 3 and 3 == 3)
    # print(10 > 3 and 3 == 3 and 1 == 1 and 1 > 0)
    
    # or:逻辑或,用来连接左右两个条件,左右两个条件但凡有一个为True,最终结果就为True
    # print(10 < 3 or 1 == 1)
    # print(10 < 3 or 1 == 1 or 10 < 11 or 1!= 1 or 'a' != 'a')
    
    # not:取反
    # print(not 10 > 3)
    
    # res=(10 > 3 and 'egon' != 'egon') or ((1 < 3 and 4 >= 3) or (not 8 > 3))
    # print(res)
  • 身份运算符

    # ==:判断的是值是否相等
    # is:判断的是id是否相等
    
    # 值相等,id可以不同
    # >>> x='info:egon:18:male'
    # >>> y='info:egon:18:male'
    # >>> id(x),id(y)
    # (2924120923496, 2924120923568)
    # >>> x == y
    # True
    # >>> x is y
    # False
    
    # id相同,值一定相同
    # >>> x=10
    # >>> x=y
    # >>> id(x)
    # 2924120923568
    # >>> id(y)
    # 2924120923568
    # >>>
    # >>> x is y
    # True
    # >>> x == y
    # True

    小整数池:

    #1、在交互式模式下
    Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收
    
    每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
    >>> y=4
    >>> id(y)
    4297641184
    >>> 
    >>> x=3
    >>> x+=1
    >>> id(x)
    4297641184
    
    #在pycharm中
    但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究
  • 平台

    操作系统+硬件=应用软件的运行平台

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!