zoukankan      html  css  js  c++  java
  • python 基础 02

     

    1. 字符串操作

    主要说说内建函数。

    字符串类型,就像列表一样,可以进行切片,排序等等操作。

    但是这里就专门说内建函数哦。

    '''
    @Author: Fallen
    @Date: 2020-04-03 10:30:20
    @LastEditTime: 2020-04-03 15:33:44
    @LastEditors: Please set LastEditors
    @Description: 字符串内建函数
    @FilePath: day02字符串内建函数.py
    '''

    l = "abcdif geheEdjfoaae ifXlji felkkNOFWIjsk"

    #1.大小写相关
    # capitalize() title() istitle()   upper() isupper()   lower() islower()
    print(l.capitalize())  #第一个字母大写
    print(l.title())  # 每个单词首字母都大写
    print(l.upper())  # 全改成大写
    print(l.lower())  # 全改成小写
    print(l.isupper())  #判断是不是都是大写
    print(l.islower())  # 判断是不是都是小写

    #2.查找替换相关
    # find()   rfind()     index() rindex()     replace()
    a = l.find("a",0,len(l)-1)  #找到具体内容的索引,没找到就返回 -1
    print(a)

    b = l.rfind("a",0,len(l)-1) #从右开始find()
    print(b)

    d = l.index("a",0,len(l)-1) #跟find()一样功能,不过,要是没找到,就报错
    print(d)

    e = l.rindex("a",0,len(l)-1) # 从右边开始 index()
    print(e)


    g = l.replace("a","##") # 用后边的东西替换前边的东西
    print(g)

    #3.编码与解码
    # encode() decode()
    # 有 gbk 中文   gb2312 简体中文 unicode utf-8 什么的
    l2 = "我爱你中国!莫哈哈哈!"
    h = l2.encode("utf-8")
    h = l2.decode("utf-8")

    ##4.字符串内建函数: startswith()   endswith() 返回值都是布尔类型True False
    # startswith判断是否是以xxx开头的,或者 endswith判断是否是以xxx结尾的
    # 应用: 文件上传 ,识别文件类型,比如: 只能上传图片(jpg,png,bmp,gif)
    filename = "note.doc"
    result = filename.endswith('doc') # 瞅瞅,filename 是不是以doc结尾的啊
    print(result)

    s = "hello"
    result2 = s.startswith('he') #瞅瞅,s 是不是以 he 开头的啊
    print(result2)

    ##那咋识别文件格式呢?其实这个识别文件格式就是识别文件名,然后看看
    ##文件名是不是以 啥啥后缀结尾的
    ## 那咋识别文件名啊
    path = input("输入文件路径:") #比如我们给一个:D:picturesackgroud.jpg
    ###有了文件路径,就可以用字符串匹配啥的找到文件名
    p = path.rfind('\') #在给定的文件路径从右向左找到第一个"",
                         
    filename = path[p+1:]#那它后边的不就是文件名
    ### 咋判断是不是图片类型
    if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('bmp'):
       print("确实是图片!")
    else:
       print("不是图片!")


    ##5.判断是不是数字,字母
    ##isalpha() isdigit()   isalnum() isnumeric() isdecimal() 这几个都返回布尔类型的结果
    ##字母       数字(可byte) 数字或字母 数字(可汉字) 数字
    ##6.连接字符元素或字符串
    ##join() join()方法,使用它前边的字符当作间隔符,括号里便的字符串活着列表内的单个字符连接起来
    new_str = '@'.join('def')
    print(new_str)

    ###还有一个厉害的,它可以对列表里的元素进行合并
    list1 = ["a","b","c","d",1,2,3,4,5]
    list2 = []
    for i in list1:
       a = str(i)
       list2.append(a)
    print(list2)
    result = "".join(list2)
    print(result)
    print(type(result))


    ##7.分割
    ##split() splitlines() count()
    ##split(‘分隔符’,次数) 分割字符串,将分割后的字符串保存到列表中
    s ='hello world hello kitty'
    result = s.split(' ',2)
    print(result)
    #上边这个 表示按照空格作为分隔符,分割字符串2次,这个两次,就是它只作用两次。就是,它只把字符串s分割成['hello', 'world', 'hello kitty']
    # 最后一个空格的地方他没分割,那要想全都分割了怎么整?那就 2 改成 3 呗。
    # 那如果是一个特别长的字符串呢?数不过来分割符怎么办?可以用 count()方法数,数完了再分割
    s ='hello world hello kitty'
    n = s.count(' ')  # count(args) 求字符串中指定args的个数
    print('个数:',n)
    result = s.split(' ',n)
    print(result)

    ##splitlines() 方法,就是把字符串分成几行,那你这么聪明,其实可以知道,其实就是以' '为分割符,然后覆盖到全部字符串的每一个' ',他的返回值是把每一行都保存到一个新的列表里
    s ='''hello world hello kitty,hello world hello kitty,
    hello world hello kitty,
    hello world hello kitty,
    hello world hello kitty,

    '''
    result = s.splitlines()
    print(result)


    ##8.去除空格
    ## strip() rstrip() lstrip()
    s =' hello world hello kitty '
    print(s.lstrip())  #去除左边空格
    print(s.rstrip())  #去除右边空格
    print(s.strip())  #去除左右边空格,但是去除不了中间的空格
    ##那,怎么才能去除字符串中间的空格呢?可以把空格替换为 ""
    print(s.replace(" ",""))  #无敌!!!!!




    除了常用的内建函数,还有一些个别的操作,用的时候去查就好

    #eval,将字符串当做代码执行
    age = 1
    print(eval('age + 3'))  # 4
    print(eval('+123'))   #123
    print(eval('3 + 2'))   #5

    #有安全问题
    eval("__import__('os').system('dir')") #显示当前目录的文件列表

    # repr(x) 返回一个对象的String格式,适合机器执行
    a = [20,30]
    s1 = repr(a)
    list1 = eval(s1)
    list2 = str(a)
    print(a == list1)
    print(a == list2)

    2.元组

    元组(tuple)的操作,跟列表基本一样。包括,元素访问,链接,重复,切片,in/not in, 长度(len()),最值(max(),min())。

    #查找(列表也可)
    t1 = (10,20,30,10)
    print(t1.index(20))  #查找值等于20的第一个元素
    print(t1.count(10))  #返回元组中10的个数

    #遍历(列表也可)
    ##同时获取下标和值
    for index,value in enumerate(t1):
       print(index, value)

    ##通过下标遍历(列表也可)
    for i in range(len(t1)):
       print(t1[i])
       

    3.解包

    #重要操作:解包!!
    #解包就是把序列里的元素,分别拿出去给外边变量赋值的过程,活着就是把这个序列去除,把元素都释放出去, #嗯,就是这样,我就这么理解,哈哈哈哈
    #变量个数和元素个数一致
    t1 = (11,20)
    a, b = t1
    print(a,b)  #11 20

    a, b = 2, 3  
    a,b,c = (1,2,3)

    #变量个数和元素个数不同
    #a=10,c=50,_获取(20,30)
    a, *_, c = 10,20,30,50
    print(a,c,_) #10 50 [20, 30]

    #a=10,b=20,c获得剩余的元素
    a, b, *c = 10,20,30,50
    print(a,b,c) #10 20 [30, 50]

    #*解包,这个就是把元组元素都释放出来
    print(*(1,2,3))  # 1 2 3

    #range解包
    a, b, c = range(3)  #a=0,b=1,c=2

    #列表解包
    a,*_b,c = [1,2,3,4,5]
    print(a,_b,c) # 1 [2, 3, 4] 5

    #字符串解包
    a,b,c = '123'
    print(a,b,c) # a='1',b='2',c='3'

    4.字典

    #基本赋值,下边这样都成
    d1 = {}  #空字典
    d1 = dict()  #空字典
    d2 = {'name':'麻辣龙虾','taste':'美味'}
    d3 = dict(a=1,b=2)
    d4 = dict([('a', 1),('b', 2)])
    d5 = dict({'a':1,'b':2})

    ##存储多个学生的成绩
    dict1 = {"jack":78,"hanmeimei":99,"lilei":60}
    print(dict1)

    #1.元素访问
    #获取   语法:字典名[key]
    print(dict1["hanmeimei"])

    #print(dict1["tom"]) #KeyError: 'tom'

    #字典名.get()
    result = dict1.get("lilei",'1')  # 如果没有lilei这个键,返回默认值1,不会报错
    print(result)

    #2.添加:当指定的键不存在的时候,则表示添加
    dict1["tom"] = 70
    print(dict1)
    #但是,如果键已经存在,则表示修改value
    dict1["jack"] = 50
    print(dict1)

    #3. 删除 pop 删除并返回指定键对应的值
    #注意:通过键,直接删除整个键值对
    dict1.pop("jack")
    print(dict1)

    del dict1['lilei'] #删除键值对,不返回值
    dict1.clear()  #清空字典
    del dict1  #删除整个字典

    #4 字典合并
    a = {1:'hello'}
    b = {2:'world'}
    a.update(b)
    print(a)

    #5.遍历
    dict2 = {"jack":78,"hanmeimei":99,"lilei":60}

    #方式一:只获取键
    for key in dict2:
       value = dict2[key]
       print(key,value)

    #方式二:只获取值
    #values,得到的结果是一个列表,当做列表处理
    print(dict2.values())

    for value in dict2.values():
       print(value)


    #方式三:同时获取键和值
    #items,得到的结果是一个列表,列表中的元素是元组
    print(dict2.items())  #[('jack', 78), ('hanmeimei', 99), ('lilei', 60)]

    for key,value  in dict2.items():
       print(key,value)

    #方式四
    for index,key in enumerate(dict2):
       value = dict2[key]
       print(index,key,value)

    #6.获取键值对的个数
    print(len(dict1))

    #7.成员操作
    d2 = {'name':'麻辣龙虾','taste':'美味'}
    print('name' in d2) #判断某个键是否在列表中

    5.随机数

    import  random

     

    函数名函数说明
    choice(seq) 返回一个序列(列表、元组,字符串)中返回一个随机元素
    randrange(start,end,step) start 指定范围的起始值 包含本身 end 指定范围的结束值 不包含本身 step 步长
    randint() 返回一个随机整数
    shuffle(seq) 将序列元素随机排列(打乱顺序)
  • 相关阅读:
    c语言几个字符串处理函数的简单实现
    各种类型排序的实现及比较
    随机洗牌算法Knuth Shuffle和错排公式
    两个栈实现队列
    面试杂题
    面试题——栈的压入、弹出顺序
    Codeforces 455A. Boredom
    PAT A1049. Counting Ones (30)
    Codeforces 895B. XK Segments
    Codeforces 282C. XOR and OR
  • 原文地址:https://www.cnblogs.com/fallen043/p/12630557.html
Copyright © 2011-2022 走看看