Python 如何缩短此代码或如何更正此代码

Python 如何缩短此代码或如何更正此代码,python,python-2.7,Python,Python 2.7,你能帮我缩短这个代码吗?我希望这是可能的,因为我觉得它太多余了,但我不知道如何避免重复。我试着用偶数字母和奇数字母创建两个列表(基本上是通过创建一个新代码),但我不知道如何继续。代码如下: 基本上,这是一个必须检查输入字符串是否有交替的元音和辅音的函数,如单词“laser”。如果字符串是交替的元音和辅音,则必须返回true,否则返回false(例如:“loss”)。 我尝试创建的另一个代码是: 第二个代码的问题是,它返回'loss'和'pair'的true(但它们应该是false),以及'las

你能帮我缩短这个代码吗?我希望这是可能的,因为我觉得它太多余了,但我不知道如何避免重复。我试着用偶数字母和奇数字母创建两个列表(基本上是通过创建一个新代码),但我不知道如何继续。代码如下: 基本上,这是一个必须检查输入字符串是否有交替的元音和辅音的函数,如单词“laser”。如果字符串是交替的元音和辅音,则必须返回true,否则返回false(例如:“loss”)。 我尝试创建的另一个代码是: 第二个代码的问题是,它返回'loss'和'pair'的true(但它们应该是false),以及'laser'和'p'true(应该是这样的)
和“玩”假(应该是这样)。如何更正第二个代码中的错误

在遍历每个字母时,只需检查两件事:

  • 当前字母是元音,下一个字母不是元音
  • 当前字母不是元音,下一个字母是元音
  • 您可以这样做:

    def is_alternating(s):
        s = s.lower()
    
        vowels = 'aeiou'
    
        for index, letter in enumerate(s[1:]):
            if letter in vowels and (s[index] not in vowels) or letter not in vowels and (s[index] in vowels):
                pass
            else:
                return False
        return True
    
    print(is_alternating("Laser"))
    print(is_alternating("Loss"))
    print(is_alternating("Pair"))
    print(is_alternating("Racecar"))
    
    # Prints:
    # True
    # False
    # False
    # True
    
    这也可以通过在偶数和奇数索引处获取每个字母并使用
    all()

    第二种解决方案基本上是:

    偶数
    s
    中具有偶数索引的每个字母

    odd
    s
    中的每个字母都有odd索引

    all()
    语句检查以下内容:

    1.)每个偶数索引字母在元音中都是,每个奇数索引数字都不是

    2.)每个奇数索引字母在元音中都是,每个偶数索引字母都不是


    在遍历每个字母时,只需检查两件事:

  • 当前字母是元音,下一个字母不是元音
  • 当前字母不是元音,下一个字母是元音
  • 您可以这样做:

    def is_alternating(s):
        s = s.lower()
    
        vowels = 'aeiou'
    
        for index, letter in enumerate(s[1:]):
            if letter in vowels and (s[index] not in vowels) or letter not in vowels and (s[index] in vowels):
                pass
            else:
                return False
        return True
    
    print(is_alternating("Laser"))
    print(is_alternating("Loss"))
    print(is_alternating("Pair"))
    print(is_alternating("Racecar"))
    
    # Prints:
    # True
    # False
    # False
    # True
    
    这也可以通过在偶数和奇数索引处获取每个字母并使用
    all()

    第二种解决方案基本上是:

    偶数
    s
    中具有偶数索引的每个字母

    odd
    s
    中的每个字母都有odd索引

    all()
    语句检查以下内容:

    1.)每个偶数索引字母在元音中都是,每个奇数索引数字都不是

    2.)每个奇数索引字母在元音中都是,每个偶数索引字母都不是



    单独检查
    甚至字母
    旧字母
    ,看看其中一个字母是否都是元音,另一个字母是否都是辅音,会不会容易得多?我该怎么做?@ve98我发布了一个答案,正确地回答了你的问题。这看起来很像NFA(非确定性有限状态自动机)的工作单独检查
    甚至字母
    旧字母
    ,看看其中一个字母是否都是元音,另一个字母是否都是辅音,会不会容易得多?我该怎么做?@ve98我发布了一个答案,正确地回答了你的问题。这看起来很像NFA(非确定性有限状态自动机)的工作我现在正在检查:谢谢。不客气。我还添加了另一种方法,将单词按偶数和奇数索引拆分,并使用
    all()
    代替if语句。第二种解决方案是什么?上面写着“注意第二个解决方案的括号。我把它们放在自己的台词上,以使巨大的回报声明更容易阅读。它应该返回
    True
    False
    我现在正在检查:DThanks很多:ddddddddd不客气。我还添加了另一种方法,将单词按偶数和奇数索引拆分,并使用
    all()
    代替if语句。第二种解决方案是什么?上面写着“注意第二个解决方案的括号。我把它们放在自己的台词上,以使巨大的回报声明更容易阅读。它应该返回
    True
    False