用python判断特殊单词

def is_special_word(word):
    word=word.lower()
    n = -1
    for i in range(len(word)-1):
        t = abs(ord(word[i])-ord(word[i+1]))
        if t<=n:
            return False
        n = t
    return True

print(is_special_word('subway'))

 

这个题目有意思,主要是对字符串的处理。写了段代码参考一下

def is_special_word(word):
    import string
    word=word.lower()
    dis=[]
    values = {x: y for x, y in zip(list(string.ascii_letters),range(1, 27))}
    for i in range(len(word)-1):
        d=abs(values[word[i]]-values[word[i+1]])
        dis.append(d)
    if dis == sorted(dis):
        print('True')
    else:
        print('False')
is_special_word('subway')

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

def isSpecialWord(word=None):
    import re
    if not word:
        exit("字符串不能为空")
    if re.search("[\d\.\*\?]",word.lower()):
        exit("字符串不能包含数字或特殊字符")
    wordTab = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 10, 'h': 8, 'i': 9, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26}

    nums = list(map(lambda x:wordTab.get(x),word.lower()))   #获取每个单词对应的数字

    res = list(map(lambda i:abs(nums[i+1] - nums[i]),range(len(nums)-1)))  #计算两个数字间的距离
    
    if res == sorted(res):
        print('True')
    else:
        print("False")


isSpecialWord(word="subway")

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

把这个问题删除了吧

把这个问题删除了吧