zoukankan      html  css  js  c++  java
  • python自动化_day2_基础数据类型0410

    1、int    1,2,3,4....用于计算,运算

    二进制 十进制转换

    2、str  ‘老男孩’,‘alex’,少量的数据的存储

    1 s = 'python自动化运维21期'
    2 s1 = s[0]
    3 print(s1)
    4 s2 = s[2]
    5 print(s2)
    6 s3 = s[-1]
    7 print(s3)
    8 s4 = s[-2]
    9 print(s4)
    str索引
     1 s = 'python自动化运维21期'
     2 s1 = s[0:6] #顾首不顾尾 意思就是从第一开始必须到最后一个的下一位 
     3 print(s1)
     4 s2 = s[6:9]
     5 print(s2)
     6 s3 = s[:5:2]
     7 print(s3)
     8 s4 = s[:]
     9 print(s4)
    10 s5 = s[-1:-5:-1] #必须加一个反向步长
    11 print(s5)
    str切片、步长、倒取

      切片: s [起始索引:结束索引+1:步长]

      capitalize首字母大写,upper全部大写,lower全部小写

    1 s = 'oldboy'
    2 # * capitalize 首字母大写,其他字母小写
    3 s1 = s.capitalize()
    4 print(s1)
    5 # ***  upper 全部大写 lower 全部小写  输入验证码不区分大小写
    6 s2 = s.upper()
    7 print(s2)
    8 s3 = s.lower()
    9 print(s3)
    #登录验证免大小写
    1
    code = 'QeaR'.upper() 2 you_code = input('请输入你的验证码:').upper() 3 if code == you_code: 4   print('验证成功')
    1 s = 'oldboy'
    2 #大小写翻转
    3 s4 = s.swapcase()
    4 print(s4)
    大小写翻转
    1 s = 'alex wusir*oldboy%taibai'
    2 s5 = s.title()
    3 print(s5)
    非字母隔开的每个单词首字母大写
     1 s = 'oldboy'
     2 #cengter 居中 后边默认填充为None
     3 s6 = s.center(30,'*' 4 print(s6)
     5 
     6 
     7 #startswith、endswith 以什么为开头和以什么为结尾 有切片功能
     8 #s7 = s.startswith('o')
     9 s7 = s.startswith('ol')
    10 print(s7)
    11 
    12 s8 = s.startswith('l',3,5)
    13 print(s8)
    ***center居中、startswith开始、endswith结束
    ***strip去除首尾的空格,制表符、换行符

    strip不止可以去除空格,换行符,制表符,还可以规定去除首尾的匹配字符(迭代去除)

    去除左边的元素使用 lstrip 

    去除右边的元素使用 rstrip

     1 s = 'oldboy wusir alex'
     2 #默认空格隔开,可以添加分隔符
     3 l = s.split()
     4 print(l)
     5 s1 =  'oldboy,wusir,alex'
     6 l1 =  = s.split(',')
     7 print(l1)
     8 s2 = 'oldboywusiroalex'#['', 'ldb', 'ywusir', 'alex']
     9 l2 = s2.split('o')
    10 print(l2)
    ***split (str----->list)可以直接把字符串转换成列表便于使用
    1 s = 'oldboy'
    2 s9 = '+'.join(s) #可迭代的 使用+逐次插到字符串形成新的字符串
    3 print(s9)
    4 l1 = ['oldboy','wusir','alex']
    5 s91 = '_'.join(l1)
    6 print(s91)
    join将列表转换成字符串(list------->str)

    split 可以添加切割次数

    l2 = s.split('o',1) #['','ldboywusiralex']

    print(l2)

    1 s = '我是你兄弟,你竟然说我是你爸爸'
    2 s10 = s.replace('','你们')
    3 print(s10)
    replace替换
    1 s = 'oldoy'
    2 ind = s.find('d')   #可以切片 find 通过元素找索引
    3 print(ind)
    4 ind1 = s.index('a')
    5 print(ind1)
    6 #区别 两个查找用find  使用index会报错
    find index定位,找到第一个之后结束
    1 #len count
    2 s = 'asdasadsaddddddddddddd'
    3 print(len(s))
    4 s1 = 'dsasdadsasdasa'
    5 print(s.count('d')
    公共方法len和count:list,tuple,str
    1 #格式化输出format 可以根据索引替换,可以指定替换
    2 res='我叫{}今年{}岁,爱好{}'.format('egon',18,'male')
    3 print(res)
    4 res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('egon',18,'male')
    5 print(res)
    6 res='{name} {age} {sex}'.format(sex='male', name='egon', age=18)
    7 print(res)
    格式化输出format
     1 i = '123'
     2 if i.isdigit():
     3     i = int(i)
     4 else:
     5     print('cuole')
     6 
     7 # name = 'jinxin123'
     8 # print(name.isalnum()) #字符串由字母或数字组成
     9 # print(name.isalpha()) #字符串只由字母组成
    10 # print(name.isdigit()) #字符串只由数字组成
    11 # i = '123a'
    12 # if i.isdigit():
    13 #     i = int(i)
    14 # else:
    15 #     print("输入有误...")
    isalnum字母和数字,isalpha字母,isdigit数字-----判断是否由该元素组成

    3、bool:True  Fales

      int -------> str(int)  

      str-------->int(str) str必须是数字组成

      int---------> bool 0 False 非0 Ture

      bool-------> int int(Ture)  1     int(False) 0

      str -------->bool  '' False  '   '非空 True

    4、list   储存大量的数据

    1 li = [111,'alex',222,'wusir']
    2 print(li[1]) #alex
    3 print(li[-1]) #wusir
    4 print(li[:2]) #[111,'alex']
    list的索引
     1 l = ['老男孩','alex','wusir','taibai','ritian']
     2 #append
     3  l.append('葫芦') #在最后追加一个元素
     4 print(l)
     5 l.append([1,2,3])#保留追加元素的信息
     6 print(l)
     7 #insert
     8 l.insert(1,'jingnvshen')#在某索引元素后插入一个元素
     9 print(l)
    10 #extend 迭代追加
    11 l.extend('alex') #把alex元素分解之后插入到列表里
    12 print(l)
    list增append追加,insert插入,extend跌打追加
     1 l = ['老男孩', 'alex', 'wusir', 'taibai', 'ritian']
     2  #pop 有返回值  按照索引删除
     3 print(l.pop(0))
     4 print(l)
     5 
     6 #remove 按照索引删除
     7 l.remove('alex')
     8 print(l)
     9 
    10 #clear 清空列表
    11 l.clear()
    12 print(l)
    13 
    14 #del 内存级别删除列表 所有删除操作可以使用del
    15 del l
    16 print(l)
    17 #按索引删除
    18 del l[1]
    19 print(l)
    20 #切片删除
    21 del l[:3]
    22 print(l)
    删(pop,remove,clear,del)
     1 l = ['老男孩', 'alex', 'wusir', 'taibai', 'ritian']
     2 #按照索引改
     3 print(l[2])
     4 l[2] = '武藤兰'
     5 print(l)
     6 
     7 #按照切片去改 把原有元素删除,把现有元素按照最小元素一次添加进去
     8 #也可以看做是替换操作
     9 l[:2] = 'abc'
    10 print(l)
    11 l[1:3] = [111,222,333,444]
    12 print(l)
    改(重新赋值)
    1 l = ['老男孩','wusir','taibai','eitian']
    2 #按照索引查询
    3 #按照切片查询
    4 #循环查询for
    5 for i in l:
     1 l1 = [1,2,1,2,1,1,3,4]
     2 print(l1.count(1))
     3 print(len(l1))
     4 
     5 #index通过元素找索引 列表只有index没有find
     6 print(l1.index(2))
     7 
     8 #sort 排序 从小到大  修改sort里的参数就可以从大到小排序
     9 l2 = [2,3,4,6,9,8,7,1]
    10 l2.sort()
    11 print(l2)
    12 l2.sort(reverse=Ture)
    13 print(l2)
    14 
    15 #reverse
    16 l2.reverse()
    17 print(l2)
    其他方法count,len,index
    1 l2 = [1,2,4,6,7,3,9]
    2 l2.sort()
    3 print(l2)
    4 l2.sort(reverse=Ture)
    5 print(l2) #从大到小
    6 l2.reverse()
    7 print(l2)
    sort排序reverse倒序排序
     1 l1 = [1,3,'alex','wusir',[1,5,8,'oldboy'],'ritian']
     2 #1、将alex全部变成大写放回原处,两种方法
     3 l1[2] = l1[2].upper()
     4 print(l1)
     5 l1[2] = 'al'
     6 print(l1)
     7 #2、给[[]]里追加一个元素叫女神
     8 l1[4].append('nvshen')
     9 print(l1)
    10 
    11 #3、将ritian首字母大写放回原处
    12 l1[5] = l1[5].capitalize()
    13 print(l1)
    14 #4、将8通过数字相加,或者字符串相加或者等等,变成‘50’
    15 l1[4][1] = str(l1[4][1]) + '0'
    16 print(l1)
    列表的嵌套

    5、tuple   只读列表 元组 元组不可以修改,不过元组里面的元素的数据可以修改

     1 tu = (2,3,4,'alex',{'name':'oldboy'},{1,2,3,},(1,2,3),{'wusir'})
     2 for i in tu:
     3     print(i)
     4 
     5 print(tu[1])
     6 
     7 print(tu[:2:2])#切片查 步长查
     8 
     9 print(tu.index(Ture)) #
    10 
    11 print(tu.count(2)) #计数
    12 
    13 print(len(tu))    #长度
    14 
    15 tu[-3].append(666)
    16 print(tu)
    tuple操作

    6、dict    以键值对的形式存在,储存大量的关联性数据 查询速度非常快,符合二分查找

      {'name':'oldboy','age':12,'name_list':['zhangsan','lisi','wangwu']}  

      字典的key是唯一的。key 必须是不可变的数据类型

      key:不可变的数据类型(可哈希):str, bool, tuple, int。

      value:任意数据类型。

      数据类型分类:

            不可变的数据类型(可哈希):str, bool, tuple, int。

            可变的数据类型:dict,list,set。

            容器类数据类型:list ,tuple,dict,set。

      字典;存储数据多,关系型数据,查询速度快。(二分查找)

    1 dic = {'name':'taibai','age':21,'hobby':'girl'}
    2 #增 在python3.6之前字典是无序的,在3.6之后有序
    3 dic['high'] = 180
    4 print(dic)
    5 #如果增加的时候有该键值对,那就直接修改
    6 dic.setdefault('high',180)
    7 print(dic)
    8 #setdefault 有则不变,无则添加 如果不想变动字典的元素,可以使用
    字典的增setdefault和改,有则覆盖,无则添加
     1 dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl', }
     2 #pop
     3 dic.pop('name') #字典的操作都是根据键操作 可以类比于列表的索引
     4 print(dic)
     5 #如果该字典里没有该键值对,可以在后边添加None不报错
     6 pint(dic.pop('name',None)) 
     7 print(dic)
     8 
     9 #clear 清空
    10 dic.clear()
    11 print(dic)
    12 
    13 #del  内存中删除
    14 del dic
    15 print(dic)
    16 
    17 #del的删除
    18 del dic{'name')
    19 print(dic)
    20 
    21 #popitem  #随机删除,3.6之后删除最后  有返回值,删除什么返回什么
    22 dic.popitem()
    23 print(dic)
    字典的删(pop clear del popitem)
    1 dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl', }
    2 dic['name'] = 'odlboy'
    3 print(dic)
    4 
    5 #update 更新 将dic的键值对覆盖添加到dic2中
    6 dic2 = {'name':'ritian','weigth':75}
    7 dic2.update(dic)
    8 print(dic2)
    dict的改
     1 dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl', }
     2 #基本的查 没有该键值对有报错
     3 print(dic['name'])
     4 
     5 #get 无报错查找
     6 print(dic.get('name'))
     7 
     8 #keys()  values()  items() 查所有的键值对 元素 组 可以转换成列表
     9 print(list(dic.keys()))
    10 for i in dic.keys():
    11     print(i)
    12 print(list(dic.values()))
    13 for i in dic.values():
    14     print(i)
    15 print(list(dic.items()))
    16 for i in dic.items():
    17     print(i)
    18 for k,v in dic.items():
    19     print(k,v)
    20 #分别赋值 必须一一对应
    21 a,b = 1,2
    22 a,b,c = ['alex','eitian','wusir']
    23 
    24 #面试:
    25 a = 1 b = 5 #用一行代码将a,b值互换
    26 a,b = b,a
    27 print(a,b)
    28 
    29 #len
    30 print(len(dic))
    31 
    32 #fromkeys 创建一个新的字典
    33 dic1 = dict.fromkeys('abc','zhangsan')
    34 dic2 = dict.fromkeys([1,2,3,],'zhangsan')
    35 print(dic1)
    36 print(dic2)
    37 
    38 dic3 = dict.fromkeys('abc',[])
    39 print(dic3)
    40 dic3['a'].append('laonanhai')#修改一个元素会修改三个。
    41 print(dic3)  
    dict的查get,for循环查 分别赋值
     1 dic = {
     2     'name_list':['b哥', '张帝', '人帅', 'kitty'],
     3     '老男孩':{
     4         'name':'老男孩',
     5         'age': 46,
     6         'sex': 'ladyboy',
     7     },
     8 }
     9 #1,['b哥', '张帝', '人帅', 'kitty']列表追加一个元素,'骑兵'
    10 dic['name_list'].append('骑兵')
    11 print(dic)
    12 #2将kitty全部变成大写
    13 dic['name_list'][-1] = dic['name_list'][-1].upper()
    14 print(dic)
    15 #3将老男孩改成oldboy
    16 dic['老男孩']['name'] = 'oldboy'
    17 print(dic)
    18 #4将ladyboy首字母大写
    19 dic['老男孩']['sex'] = dic['老男孩']['sex'].capitalize()
    20 print(dic)
    字典的嵌套

    7、set集合    关系型数据的交集,并集,差集,子集.....可以用于列表的去重

    集合:无序的不重复的数据类型。它里面的元素必须是不可变的(可哈希的),但是集合本身是可变的(不可哈希的)

      1.关系测试:交集,并集,差集,子集

      2.去重。(列表的去重)

     1 l1 = [1,1,3,4,5,6,6,7,]
     2 set1 = list(set(l1))
     3 print(set1)
     4 
     5 #add
     6 set1.add('666')  #增 无序的
     7 print(set1)  
     8 
     9 #update
    10 set1.update('abd')
    11 print(set1)
    12 
    13 #remove  clear del pop随机删除
    set集合 增 删 查
     1 交集 &  intersectio
     2 print(set1 & set2)
     3 print(set1.intersection(set2))
     4 
     5 并集 |   union
     6 print(set1 | set2)
     7 print(set1.union(set2))
     8 
     9 差集  -  difference
    10 print(set1 - set2)
    11 print(set1.difference(set2))
    12 
    13 反交集 ^ symmetric_difference
    14 print(set1 ^ set2)
    15 print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
    16 set1 = {1,2,3}
    17 set2 = {1,2,3,4,5,6}
    18 
    19 print(set1 < set2)
    20 print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
    21 
    22 print(set2 > set1)
    23 print(set2.issuperset(set1))
    24 
    25 s = frozenset('barry')
    26 s1 = frozenset({4,5,6,7,8})
    27 print(s,type(s))
    28 print(s1,type(s1))
    集合的关系测试

    8、编码

    ASCII:字母 数字  特殊字符

        万国码:unicode:

            A:0000 0001 0000 0001 两个字节表示一个字符,字符:组成元素的最小单元

            中:0000 0001 0000 0001 两个字节表示一个字符 ☆中国汉字超过65535种

        升级:

            A:0000 0001 0000 0001 0000 0001 0000 0001 四个字节表示一个字符

            中:0000 0001 0000 0001 0000 0001 0000 0001 四个字节表示一个字符

        utf-8:最少用一个字节,表示一个字符:

            A:0000 0001

            欧洲:0000 0001 0000 0001

            中文:0000 0001 0000 0001 0000 0001

        gbk国标:

            英文:0000 0001

            中文:0000 0001 0000 0001

      python3x:

        1、不同编码之间的二进制是不能互相识别的

        2、python3x str内部编码为(内存)Unicode

          但是,对于文件的存储和传输,不能用Unicode

          bytes类型,内部编码方式为非Unicode

    编码的转化,因为传输和存储不能用Unicode,而str类型只有Unicode,所以需要借用bytes做转化然后存储传输

     1 #编码的转化 :编码encode和解码decode
     2 s = 'laonanhai'
     3 s2 = s.encode('utf-8')  #str----->bytes  encode
     4 s3 = s.encode('gbk')
     5 print(s2,s3)
     6 
     7 s = '中国'
     8 s2 = s.encode('utf-8') 
     9 s3 = s.encode('gbk')
    10 print(s2,s3)
    11 
    12 s4 = s2.decode('utf-8')  #bytes----->str decode 解码
    13 print(s4)

    9、bytes

    1 #bytes类型 对于英文来说
    2 s = 'laonanhai'   #表现形式  内部编码方式为:Unicode
    3 print(s,type(s))
    4 
    5 s1 = b'laonanhai' #表现形式  内部编码方式为:非Unicode(utf-8,gbk...)
    6 print(s1,type(s1))
    1 #bytes类型 对于中文
    2 s = '中国‘’
    3 print(s,type(s))
    4 
    5 s1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
    6 print(s1,type(s1))

    10、数据类型的补充

     1 l1 = ['alex','wusir','taibai','barry','老男孩']
     2 
     3 #将奇数位元素删除
     4 del l1[1::2]
     5 print(li)
     6 
     7 #错误的事例
     8 for i in l1:
     9     if l1.index(i) % 2 == 1:
    10         del l1[ l1.index(i)]
    11 print(l1)
    12 #原因说明:再循环一个列表时,不要对列表进行删除的动作
    13 #改变了列表的元素个数(索引改变),会出错。
    14 #倒着删除
    15 for i in range(len(l1)-1,-1,-1):
    16             if i % 2 == 1:
    17                  del l1[i]
    18 print(l1)
    19 #range  可定制的数字列表 还可以加步长 还可以倒着 用于for循环
    20 for i in range(0,10,2):
    21     print(i)
    22 for i in range(10,2,-1):
    23     print(i)
    24 
    25 #字典 dict 再循环字典时不要改变的大小。删除或增加
    26 dic = {'k1':'v1','k2':'v2','k3':'v3','r':666}
    27 l2 = []
    28 for i in dic:
    29     if 'k' in  i:
    30         l2.append(i)
    31 print(l2)
    32 for i in l2:
    33     del dic[i]
    34 print(dic)
    35 
    36 
    37 #元组tuple  如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型是该元素一致   个人理解是因为()包裹填写变量的时候有无该括号没影响,添加上逗号或者其他之后才会认为是一个元组。
    38 tu1 = (1) 
    39 print(tu1,type(tu1))
    40 tu2 = ('alex')
    41 print(tu2,type(tu2))
     1 #id 内存 一定要在终端测试
     2 a = 'alex'
     3 b = 'alex'
     4 print(a == b) #数值比较
     5 print(a is b)    #内存地址比较
     6 
     7 #小数据池int str
     8 #int -5 ~ 256 的相同的数全都指向一个内存地址,节省空间
     9 a = 3
    10 b = 3
    11 print(a is b)
    12 #str  s = 'a' * 20 以内都是同一个内存地址
    13 #字符串含有非字母的,就不共用一个内存地址

    11 深浅copy

    1 #赋值运算,他们共用一个列表
    2 a = [1,2,3]
    3 b =a
    4 a.append(666)
    5 print(a,b)
    1 #浅copy  创建两个内存地址。
    2 l1 = [1,2,3]
    3 l2 = l1.copy()
    4 l1.append(666)
    5 print(l1,l2)
    1 #浅copy 对于父层来说用两个内存地址,但是对于子层来说共用一个内存地址
    2 l1 = [1,2,3,[2,3]]
    3 l2 = l1.copy()
    4 l1[-1].append(666)
    5 print(l1,l2)
    6 print(id(l1[-1]),id(l2[-1]))
    #深copy  对于深copy来说,所有都是分开的内存地址
    import copy
    l1 = [1,2,3,[22,33]]
    l2 = copy.deepcopy(l1)
    l1[-1].append(777)
    print(l1,l2)

    12,购物车作业思路

    '''
    购物车
    功能要求:
    要求用户输入总资产,例如:2000
    显示商品列表,让用户根据序号选择商品,加入购物车
    购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    goods = [{"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
          {"name": "游艇", "price": 20},
          {"name": "美女", "price": 998},
    ]
    '''

    goods = [{"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},]
    '''
    money = input()
    shopping_car = [{name:;电脑,count:3}]
    1,展示商品
    1, 电脑 1999
    2, 鼠标 10
    .....
    1,输入的是全部数字
    2,判断,范围。
    购买成功,打印购买的商品列表

    '''
  • 相关阅读:
    红黑树——以无厚入有间
    红黑树——依天理以神遇
    B-树 分合之道
    B-树 动机与结构
    云心出岫——Splay Tree
    双散列和再散列暨散列表总结
    开放定址法——平方探测(Quadratic Probing)
    [LeetCode 109]
    [LeetCode 110]
    [LeetCode 111]
  • 原文地址:https://www.cnblogs.com/tewu/p/8761182.html
Copyright © 2011-2022 走看看