zoukankan      html  css  js  c++  java
  • Python:对输入的单词进行字典序排序输出

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

    1.单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准,
       如果第一个字母相同,就用第二个字母为基准,
       如果第二个字母相同就以第三个字母为基准。
       依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。 
    2.当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。 
    3.字母大小写不同的相同单词,只输出一次。

     输入描述:不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号。
     输出描述:输出排序后的单词,单词之间用空格隔开(最后不带空格),重复的单词只输出一次。


    解答:

    import re
    
    
    def zdx(sword):
        l = []
        temp = sword.split(" ")
        for i in temp:
            if i.lower() not in [j.lower() for j in l]:
                l.append(i)
        return " ".join(sorted(l, key=str.lower))
    
    
    
    while True:
        s = input("请输入用空格进行分隔的单词:")
        if len(s) <= 255:
            p = re.compile(r"^[a-zA-Zs]{0,255}$")  
            if p.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 in l]
        说明:
            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
  • 相关阅读:
    apple Safari input text 的兼容问题
    移动开发不能不知道的事-关于点击元素时出现的阴影
    移动开发不能不知道的事- css3复选框样式自定义
    移动开发不能不知道的事-中西文字体
    移动开发不能不知道的事-dp
    猴子吃桃
    3个数排序
    求10!
    一个简单的求和程序
    输出一个三角形
  • 原文地址:https://www.cnblogs.com/JodieRao/p/12635910.html
Copyright © 2011-2022 走看看