Python:对输入的单词进行字典序排序输出

摘要:
题目描述:对输入的单词进行字典序排序输出,字典序定义:1.单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准,如果第一个字母相同,就用第二个字母为基准,如果第二个字母相同就以第三个字母为基准。输入描述:不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号。解答:importredefzdx:l=[]temp=sword.split("")foriintemp:ifi.lower()notin[j.lower()forjinl]:l.appendreturn"".joinwhileTrue:s=inputiflen˂=255:p=re.compileifp.match:printtest=zdxprintbreakelse:print("输入只能是字母或空格,请重新输入!匹配成功re.match方法返回一个匹配的对象,否则返回None

题目描述:
对输入的单词进行字典序排序输出,字典序定义:

1.单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准,
如果第一个字母相同,就用第二个字母为基准,
如果第二个字母相同就以第三个字母为基准。
依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。
2.当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。
3.字母大小写不同的相同单词,只输出一次。
输入描述:不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号。
输出描述:输出排序后的单词,单词之间用空格隔开(最后不带空格),重复的单词只输出一次。

解答:

importre


defzdx(sword):
    l =[]
    temp = sword.split(" ")
    for i intemp:
        if i.lower() not in [j.lower() for j inl]:
            l.append(i)
    return " ".join(sorted(l, key=str.lower))



whileTrue:
    s = input("请输入用空格进行分隔的单词:")
    if len(s) <= 255:
        p = re.compile(r"^[a-zA-Zs]{0,255}$")  
        ifp.match(s):
            print("输入合格:" +s)
            test =zdx(s)
            print("按字典序排列输出为:%s" %test)
            break
        else:
            print("输入只能是字母或空格,请重新输入!")
    else:
        print("输入不得超过255个字符,请重新输入!")

知识点梳理:

字典序知识点梳理:
1.    str.split([sep[,maxsplit]])
    说明:
        a.括号内的表示是可选内容,[,]逗号表示可选参数要用逗号和必须参数分开
        b.返回一个列表,其中包含以sep为分隔符对字符串进行划分得到的结果
        c.如果没有指定参数sep,将以所有空白字符为分隔符进行划分
        d.还可以将最大划分次数限制为maxsplit
    
2.    str.lower()
    说明:将字符串中所有字母都转换为小写,并返回结果
    
     str.upper()
    说明:将字符串中所有字母都转换为大写,并返回结果    
    
3.    str.join(sequence)
    说明:将序列中的元素以指定的字符连接生成一个新的字符串,并返回结果
    
    
4.    [j.lower() for j inl]
    说明:
        a.这种写法是python特有的列表生成式
        b.写列表生成式时,要把生成的元素j.lower()放到前面,后面跟for循环,就可以创建出list
        c.for循环的后面还可以加上if判断,也可以用多层for循环等

        
5.    input( )函数,接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型

6.    compile 函数
    说明:
        compile 函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 这两个函数使用
    语法格式为:
        re.compile(pattern[, flags])
    参数:
        pattern : 一个字符串形式的正则表达式
        flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
            re.I 忽略大小写
            re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
            re.M 多行模式
            re.S 即为'. '并且包括换行符在内的任意字符('. '不包括换行符)
            re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
            re.X 为了增加可读性,忽略空格和'# '后面的注释
          
          
7.    正则表达式:
    ^匹配字符串的开头
    $            匹配字符串的末尾
    [a-z]        匹配任何小写字母
    [A-Z]        匹配任何大写字母
    s           匹配任意空白字符,等价于 [	f]
    re{ n, m}    匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
    
    
8.    re.match函数
    说明:
        re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
    函数语法:
        re.match(pattern, string, flags=0)
    函数参数说明:
        pattern     匹配的正则表达式
        string      要匹配的字符串
        flags       标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

    匹配成功re.match方法返回一个匹配的对象,否则返回None

免责声明:文章转载自《Python:对输入的单词进行字典序排序输出》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇win7 硬盘安装suse双系统启动顺序更改GIS数据的查找,插入,删除,更新(ArcEngine)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python像操作文件一样操作内存的模块 StringIO

io流(io stream)流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。 输入输出(IO)是指计算机同任何外部设备之间的数据传递。常见的输入...

关于面试总结12-接口自动化面试题

前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自动化测试?总的来说问的比较多的就是以下几个问题: 1.json和字典的区别? -对基础数据类型的考察 2.测试的数据你放在哪? -数据与脚本分离 3.参...

使用python asyncio+aiohttp做接口测试(TODO)

线程是操作系统层面的“并行”, 协程是应用程序层面的“并行”。 协程本质上就是:提供一个环境,保存一些需要等待的任务,当这些任务可以执行(等待结束)的时候,能够执行。再等待的过程中,程序可以执行别的任务。 asyncio是python3.4版本引入到标准库因此要注意python版本 我的python环境 Python 3.6.5 (v3.6.5:f59c0...

我为什么从python转向go

应puppet大拿刘宇的邀请,我去西山居运维团队做了一个简短分享,谈谈为什么我要将我们的项目从python转向go。 坦白的讲,在一帮python用户面前讲为什么放弃python转而用go其实是一件压力蛮大的事情,语言之争就跟vim和emacs之争一样,是一个永恒的无解话题,稍微不注意就可能导致粉丝强烈地反击。所以我只会从我们项目实际情况出发,来讲讲为...

python的导包问题

有事会遇到在python代码中导入包错误问题,本文简单对python包的引入做简单介绍 简单说,我认为python导包一共有3种情况,分别是: 要导的包与当前文件在同一层要导的包在当前文件的底层(就是与当前文件夹同级的文件夹里)要导的包在当前文件的上层 1、要导的包与当前文件在同一层 use.py source.py use.py表示包的调用方,sou...

【Python从入门到精通】(十)Python流程控制的关键字该怎么用呢?【收藏下来,常看常新】

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。这篇文章主要介绍Python中流程控制的关键字的使用,涉及到if else,for,while等关键字 干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。 前言 有句话说程序就是由流程+数据结构组成。任何程序都是如此。前面花了好几个篇幅来介绍Python中的各种数据...