【问题标题】:Python function to check string for non-matching vowelsPython函数检查不匹配元音的字符串
【发布时间】:2021-02-10 21:28:06
【问题描述】:

我想在 python 中编写一个函数,它接收一个字符串并检查所有元音是否都是相同的字母(真)或不同(假)。我已经很接近了,但我一直在试图弄清楚如何让它只返回一个字符串的判断,而不是比较所有后续的元音对。

这是我的代码

def checkvowels(str) :
    vowels = ("a", "e", "i", "o", "u")
    last_vowel = None
    for c in str: 
        if c in vowels and last_vowel == None:
            last_vowel = c
        elif last_vowel != None:
            if c != last_vowel:
                print('False')
                return
            else:
                print('True')

现在是这样

checkvowels('tree climber') 

返回

TRUE
FALSE

而不仅仅是 FALSE。感谢您的帮助。

【问题讨论】:

    标签: python


    【解决方案1】:

    如果您只想报告一个结果,那么您必须在完成之前阻止打印。您不能在循环print 语句。

    def checkvowels(str) :
        vowels = ("a", "e", "i", "o", "u")
        last_vowel = None
    
        result = True
        for c in str: 
            if c in vowels and last_vowel == None:
                last_vowel = c
            elif last_vowel != None:
                if c != last_vowel:
                    result = False
    
        print(result)
    

    更容易理解,让我们根据您描述问题的方式尝试一下:

    1. 提取所有元音。

    代码:

    found_vowels = [c for c in str if c in vowels]
    
    1. 计算您找到了多少个不同的元音:创建一个集合(以删除重复项)并查看列表中有多少元素:

    代码:

    vowel_count = len(set(found_vowels)
    print(vowel_count == 1)
    

    这会根据需要为您提供TrueFalse。简而言之:

    def checkvowels(phrase) :
        vowels = ("a", "e", "i", "o", "u")
        print(len(set([c for c in phrase if c in vowels])) == 1)
    

    【讨论】:

    • 这非常有帮助。谢谢你。似乎空格会导致您的第一个示例返回 False,您能帮我理解这是为什么吗?
    【解决方案2】:

    这将是一个带有 set 的运行解决方案 - python 中的一个集合对于每个添加的元素只能有一个条目:

    # I simply compare if in my set_of_seen_vowels are more than one vowel entry 
    
    def checkvowels(string) :
        vowels = ("a", "e", "i", "o", "u")
        last_vowel = None
        set_of_seen_vowels = set()
        for c in string: 
            if c in vowels:
                set_of_seen_vowels.add(c)
     
        print(set_of_seen_vowels)
        if len(set_of_seen_vowels) != 1:
            print('False')
            return False
        else:
            print('True')
            return True
    

    还要注意str 是python 中的关键字,不应用作变量名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2020-02-06
      相关资源
      最近更新 更多