zoukankan      html  css  js  c++  java
  • python字符串用法

    一,数据类型的转换

    1常用的数据类型有int,str,bool三种;

    int是整型:一般的操作是查找数据的二进制长度bit_length()
    一般数据有:
    1)二进制:逢二进一
    2)十进制,(0-9)逢十进一
    3)八进制,(0-7)蜂八进一
    4)十六进制逢 (0-F)十六进一
    例:
    a=10 
    print(a.bit_length())#就能得到a这个变量的值的二进制长度

    二,数据类型的转换

    结论1把x转换成y类型 y(x)
    例子:print(bool(-1))#将布尔值转变成数据类型
    print(int(a))#将a转变成数据类型
    print(str(a)#将a转变成字符类型 
    结论2空的东西是False, 非空的东西是True,
    false: False: 0,'',[],{},set(),tuple(),None(真空)
    print(bool({}) #false

    三,索引切片

    1,在python和其他开发语言中我们的索引都是从零开始算的

     反向 -7 -6-5 -4 -3-2 -1
     正向  0  1 2  3  4 5  6
     s = "文 能 提 笔 安 天 下"
     print(s[3])
     print(s[7]) # index out of range 超过了索引的范围
     print(s[-8]) # 反向索引 - 反向
    切片 从字符串中获取新字符串.例子:
    s = "银王喜欢和金王一起讨论污王"
    s1 = s[5]+s[6]+s[7]+s[8]
    print(s1)
    s[start: end] 从start切到end。 但是不包含end. 顾头不顾尾
    s2 = s[5:9] #  从5-9 没有9
    print(s2)
    print(s[3:7]) # 欢和金王
    print(s[5:]) # 从5开始, 到末尾
    print(s[:5]) # 从头开始到5结束
    print(s[:]) # 从头到尾
    print(s[5:3]) # 默认的方向是从左到右.
    s[start: end: step] step如果是正数 从左到右。 如果是负数就是从右到左
    s = "金毛狮王谢逊紫衫龙王黛绮丝"
    print(s[3:1:-1]) # 可以从右往左切片
    print(s[1:8:3])  #从左往右切且各三个取一个值
    print(s[::-1])

    总结:

    s[start: end: step]
    start:  起始位置
    end:  结束为止。取不到
    step:  步长。 每隔xx个取1个。 默认是1 如果step是-1 从右往左取值

    四,字符串操作

    1 upper() 全部转化成大写字母,loswer全部转换成小写,capitalize()首字母大写,title()每个单词首字母大写,swapcase()大写变小写小写变大写
    2 strip() 去掉左右两段的空白(空格,
    , 	)
    3 replace(old, new) 字符串替换
    4 split() 切割. 得到的结果是一个列表.
    5 startswith() 判断是否以xxx开头,endswith()判断以什么结尾
    6 find() 查找。如果找到了。 返回索引。如果找不到返回-1
    7 len() 内置函数,求字符串长度
    8 count()计数计算字符或数字出现的次数
    9 isdigit(),判断是否是数字

    例子

    2.有字符串s = "123a4b5c"
    1)通过对s切⽚形成新的字符串s1,s1 = "123"
        s="123a4b5c"
        s1=s[0:3]
        print(s1)
    2)通过对s切⽚形成新的字符串s2,s2 = "a4b"
        s="123a4b5c"
        s2=input(s[3:6])
        print(s2)
    3)通过对s切⽚形成新的字符串s3,s3 = "1345"
        s="123a4b5c"
        s3=s[0:8:2]
        print(s3)
    4)通过对s切⽚形成字符串s4,s4 = "2ab"
        s="123a4b5c"
        s4=s[1:7:2]
        print(s4)
    5)通过对s切⽚形成字符串s5,s5 = "c"
        s="123a4b5c"
        s5=s[-1]
        print(s5)
    6)通过对s切⽚形成字符串s6,s6 = "ba2"
        s="123a4b5c"
        s6=s[-3:-8:-2]
        print(s6)
    3.使⽤while和for循环分别打印字符串s="asdfer"中每个元素。
    #(while循环)
    s="asdfer"
    index=0
    while index<len(s):
        print(s[index])
        index+=1
    #(for循环)
        # s="asdfer"
        # for i in s:
        #     print(i)
    4.使⽤for循环对s="asdfer"进⾏循环,但是每次打印的内容都是"asdfer"。
     s="asdfer"
        for i in s:
            print(i,s)
    5.使⽤for循环对s="abcdefg"进⾏循环,每次打印的内容是每个字符加上sb,
     s="abcdefg"
        for i in s:
            print(i +"sb")
    作业及默写
    1.有变量name = "aleX leNb" 完成如下操作:
    1)移除 name 变量对应的值两边的空格,并输出处理结果
        name = "alex leNb"
        print(name.strip())
    2)移除name变量左边的"al"并输出处理结果
        name = "alex leNb"
        print(name.strip("al"))
    3)移除name变量右⾯的"Nb",并输出处理结果
        name= "alex leNb"
        print(name.strip("Nb"))
    4)移除name变量开头的a"与最后的"b",并输出处理结果
        name="alex leNb"
        print(name.strip("a"+"b"))
    5)判断 name 变量是否以 "al" 开头,并输出结果
        name="alex leNb"
        n=name.startswith("al")
        if n == True:
            print("name is al start")
        else:
            print("is not al start")
    6)判断name变量是否以"Nb"结尾,并输出结果
        name = "alex leNb"
        n=name.endswith("Nb")
        if n== True:
            print("是以Nb结尾")
        else:
            print("不是以Nb结尾")
    7)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
        name = "alex leNb"
        print(name.replace("l","p"))
    8)将name变量对应的值中的第⼀个"l"替换成"p",并输出结果
        name="alex leNb"
        n=name.replace("al","ap")
        print(n)
    9)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
        name="alex leNb"
        print(name.split("l"))
    10)将name变量对应的值根据第⼀个"l"分割,并输出结果。
        print(name.replace("al","ap").split("p"))
    11)将 name 变量对应的值变⼤写,并输出结果
        name="alex leNb"
        print(name.upper())
    12)将 name 变量对应的值变⼩写,并输出结果
        name="alex leNb"
        print(name.lower())
    13)将name变量对应的值⾸字⺟"a"⼤写,并输出结果
        name="alex leNb"
        print(name.capitalize())
        print(name.title())
        print(name.swapcase())
    大写变小写,小写变大写
        name="alex leNb"
        print(name.upper())
    14)判断name变量对应的值字⺟"l"出现⼏次,并输出结果
        name="alex leNb"
        print(name.count("l"))
    15)如果判断name变量对应的值前四位"l"出现⼏次,并输出结果
        name="alex leNb"
        i=name[0:4]
        print(i.count("l"))
    16)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
        name="alex leNb"
        print(name.index("N"))
    17)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
        name="alex leNb"
        print(name.find("N"))
    18)从name变量对应的值中找到"X le"对应的索引,并输出结果
        name="alex leNb"
        print(name.find("x le"))
    19)请输出 name 变量对应的值的第 2 个字符?
        name="alex leNb"
        print(name.find("l"))
    20)请输出 name 变量对应的值的前 3 个字符?
        name = "alex leNb"
        print(name.find("a"),name.find("l"),name.find("e"))
    21)请输出 name 变量对应的值的后 2 个字符?
        name="alex leNb"
        print(name.find("N"),name.find("b"))
    22)请输出 name 变量对应的值中 "e" 所在索引位置?
        name="alex leNb"
        print(name.find("e"))
    例如:asb, bsb,csb,...gsb。
    6.使⽤for循环对s="321"进入循环,打印的内容依次是:"倒计时3秒","倒计时
    2秒","倒计时1秒","出发!"。
    s="321"
    for t in s:
        print("倒计时" + t + "s")
    else:
        print("出发")
    7,实现⼀个整数加法计算器(两个数相加):
    如:content = input("请输⼊内容:") ⽤户输入:5+9或5+ 9或5 + 9,然后进
    行分割再进⾏计算。
    content=input("请输入内容")
    n=content.split("+")
    s=0
    for i in n:
        s += int(i)
        print(s)
    8,升级题:实现⼀个整数加法计算器(多个数相加):
    如:content = input("请输⼊内容:") 用户户输入:5+9+6 +12+ 13,然后进行计算
    content=input("请输入内容")
    n=content.split("+")
    s=0
    for i in n:
        s += int(i)
        print(s)
    分割再进⾏计算。
    9,计算⽤户输⼊的内容中有⼏个整数(以个位数为单位)。
    如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla
    content=input("请输入内容")
    count=0
    for b in content:
        if b.isdigit()==1:
            count=count+1
    print(count)

    五迭代

    for 变量 in 可迭代对象:
    循环体(break,continue)
    else:

    例子

    写代码,完成下列需求:
    用户可持续输出(用while循环),用户使用的情况:
    输⼊A,则显示走大路回家,然后在让用户户进二步选择:
    是选择公交车,还是步⾏?
    选择公交车,显示10分钟到家,并退出整个程序。
    选择步⾏,显示20分钟到家,并退出整个程序。
    输⼊B,则显示⾛⼩路回家,并退出整个程序。
    输⼊C,则显示绕道回家,然后在让用户进行步选择:
    是选择游戏厅玩会,还是⽹吧?
    选择游戏厅,则显示 ‘一个半⼩时到家,爸爸在家,拿棍等你。’并让其
    重新输⼊A,B,C选项。
    选择⽹吧,则显示‘两个⼩时到家,妈妈已做好了战斗准备。’并让其重
    新输⼊A,B,C选项。
     while True:
            user=input("请输入一个字母A或B或C:")
            if user=="C":
                print("绕道回家")
                use1 = input("请问是游戏厅还是网吧玩会:")
                if use1 =="游戏厅":
                    print("一个半小时到家,爸爸在家,拿棍等你。")
                elif use1 == "网吧":
                    print("两个小时到家,妈妈已做好了战斗准备。")
            elif user=="A":
                print("走大路回家")
                use2=input("请问坐公交还是步行:")
                if use2 == "公交车" :
                    print("10分钟到家")
                    break
                elif use2 =="步行":
                    print("20分钟到家")
                    break
            else:
                print("走小路回家")
                break
    写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?
    i=1
    sumi=0
    j=1
    sumj=0
    while i<99 and j<99:
        sumi=sumi+i
        j = i + 1
        i += 2
        if j==88:
            continue
        sumj = sumj + j
    print(sumi-sumj)(升级题)判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海
    ⾃来⽔来⾃海上(升级题)
        while True:
            wen = input("请输入一句话:")
            if wen[0:] == wen[-1::-1] :
                print("这句话是回文")
            else:
                print("不是回文")
    13. 输⼊一个字符串,要求判断在这个字符串中⼤写字⺟,小写字⺟,数字,
    其它字符共出现了多少次,并输出出来
     content=input("请输入内容")
        count=0
        cont1=0
        cont2=0
        cont3=0
        for a in content:
            if a.isdigit()==1:
                count=count+1
        # print(count)
            elif a.islower()==1:
                cont1 += 1
        # print(count1)
            elif a.isupper()==1:
                cont2 +=1
        #print(cont2)
            else:
                cont3 +=1
        print("数字",count,"个")
        print("小写字母",cont1,"个")
        print("大写字母",cont2,"个")
        print("其他字符", cont3,"个")
    

    14给出百家姓. 然后用户输入一个人的名字. 判断这个姓是否是百家姓中的姓氏

    first_name=
    '''赵钱孙李,周吴郑王。
    冯陈褚卫,蒋沈韩杨。
    朱秦尤许,何吕施张。
    孔曹严华,金魏陶姜。
    戚谢邹喻,柏水窦章。
    云苏潘葛,奚范彭郎。
    鲁韦昌马,苗凤花方。
    俞任袁柳,酆鲍史唐。
    费廉岑薛,雷贺倪汤。
    滕殷罗毕,郝邬安常。
    乐于时傅,皮卞齐康。
    伍余元卜,顾孟平黄。
    和穆萧尹,姚邵湛汪。
    祁毛禹狄,米贝明臧。
    计伏成戴,谈宋茅庞。
    熊纪舒屈,项祝董梁。
    杜阮蓝闵,席季麻强。
    贾路娄危,江童颜郭。
    梅盛林刁,钟徐邱骆。
    高夏蔡田,樊胡凌霍。
    虞万支柯,昝管卢莫。
    经房裘缪,干解应宗。
    丁宣贲邓,郁单杭洪。
    包诸左石,崔吉钮龚。
    程嵇邢滑,裴陆荣翁。
    荀羊於惠,甄曲家封。
    芮羿储靳,汲邴糜松。
    井段富巫,乌焦巴弓。
    牧隗山谷,车侯宓蓬。
    全郗班仰,秋仲伊宫。
    宁仇栾暴,甘钭厉戎。
    祖武符刘,景詹束龙。
    叶幸司韶,郜黎蓟薄。
    印宿白怀,蒲邰从鄂。
    索咸籍赖,卓蔺屠蒙。
    池乔阴鬱,胥能苍双。
    闻莘党翟,谭贡劳逄。
    姬申扶堵,冉宰郦雍。
    卻璩桑桂,濮牛寿通。
    边扈燕冀,郏浦尚农。
    温别庄晏,柴瞿阎充。
    慕连茹习,宦艾鱼容。
    向古易慎,戈廖庾终。
    暨居衡步,都耿满弘。
    匡国文寇,广禄阙东。
    欧殳沃利,蔚越夔隆。
    师巩厍聂,晁勾敖融。
    冷訾辛阚,那简饶空。
    曾毋沙乜,养鞠须丰。
    巢关蒯相,查后荆红。
    游竺权逯,盖益桓公。
    万俟司马,上官欧阳。
    夏侯诸葛,闻人东方。
    赫连皇甫,尉迟公羊。
    澹台公冶,宗政濮阳。
    淳于单于,太叔申屠。
    公孙仲孙,轩辕令狐。
    钟离宇文,长孙慕容。
    鲜于闾丘,司徒司空。
    丌官司寇,仉督子车。
    颛孙端木,巫马公西。
    漆雕乐正,壤驷公良。
    拓跋夹谷,宰父谷梁。
    晋楚闫法,汝鄢涂钦。
    段干百里,东郭南门。
    呼延归海,羊舌微生。
    岳帅缑亢,况郈有琴。
    梁丘左丘,东门西门。
    商牟佘佴,伯赏南宫。
    墨哈谯笪,年爱阳佟。
    第五言福,百家姓终。'''

    #for循环
    name = input("请输入用户名") for i in first_name : if i == name[0] : break print(i,"在百家姓中") else: print("不在百家姓中")
    #while循环
    while True: name = input("请输入用户名") if name[0] in first_name : print("在百家姓中") continue else: print("不在百家姓中") 
    六,格式化输出
    制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名
    字和爱好进⾏任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
    aihao="和蔼可亲的%s,最喜欢在%s,干%s" %("刘传盛","小树林","谈恋爱")
    love="{}的演的电影,是{},{}很喜欢" .format("周星驰","幽默的","大家")
    AV="{0},{1},{2},{3},都是{4},受广大{5}喜欢" .format("苍井空","泷泽萝拉","小泽玛丽牙","波多野结衣","日本明星","宅男")
    print(AV)
    print(love)
    print(aihao)
    
    
  • 相关阅读:
    Bootstrap
    格式化字符串
    闭包函数与装饰器
    正则表达式
    jQuery
    分布式-锁-1.1 多线程锁无法满足的场景
    effective python 读书笔记-第22条: 尽量用辅助类来维护程序的状态,而不要用字典
    effective python 读书笔记:第21条-用只能以关键字形式指定的参数来确保代码明晰
    effective python 读书笔记:第20条-用None和文档字符串来描述具有动态默认值的参数
    git如何将上游(upstream)新建分支(origin没有)导入到origin中?
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/9822516.html
Copyright © 2011-2022 走看看