【问题标题】:How to print the least used vowel in a string?如何在字符串中打印最少使用的元音?
【发布时间】:2016-11-06 17:23:54
【问题描述】:

我希望用户能够输入一段字符串(我知道怎么做)

然后我想让 Python 计算每个元音 (aeiou) 使用了多少次。

计算每个元音使用了多少次后,我需要程序返回至少使用一次的最少使用的元音/s。如果不使用元音,则不应返回。如果出现最少使用的平局,则应退回两者。

如果没有使用元音,它应该打印一个错误代码“没有使用元音”(我知道怎么做)

例如:如果这是一个句子中元音使用的次数:

a=4
b=2
c=0
d=0
e=2

它应该打印“最少使用的元音是 b 和 c,有 2 次使用”。

【问题讨论】:

    标签: python counter sentence


    【解决方案1】:

    你可以:

    1. 从字符串中删除所有非元音字符。
    2. 按字符分割字符串。
    3. 使用您从 #2 获得的列表中的 Counter

    import re
    from collections import Counter
    s = 'asdfwerasdfwaxciduso'
    only_vowels = re.sub(r"[^aeiou]", "", s)
    c = Counter(list(only_vowels))
    c.most_common()[-1]
    

    【讨论】:

    • 这真的很有帮助...谢谢。该编码唯一不允许我做的事情是:如果使用最少的元音与另一个元音的使用次数相同,则必须打印两个元音。我该怎么做?
    • 我找不到您对我的评论的回复?如果有多个最不常见的元音,如何打印两个元音?除此之外 - 完美的答案。我将很快标记为已接受的答案 - 会给您机会回复,因为我仍然不确定如何打印多个最不常见的元音!
    • 顺便谢谢你的帮助
    • 现在我看到了完整的评论。你检查c.most_common() 的值了吗?您可以遍历它(以相反的顺序)并在需要时停止:)
    • 太棒了,我想我终于到了。谢谢德克尔。
    【解决方案2】:

    艰难地做——一个字母一个字母。使用 for 循环遍历字符串,并为每个字母增加一个字典值。最后,检查带有元音的键并找到最小的。

    【讨论】:

    • 谢谢 - 我怎样才能忽略使用零次的元音?
    • 如果一个字母没有被使用,它就没有钥匙。使用默认值 1 的 Collections 中的 defaultdict,这样它就不会在第一次尝试添加一个时吓坏了。
    • 谢谢 - 最后一个 Q - 假设两个元音共享相同的最低值。我怎样才能让它同时打印它们?
    • 嗯...找到 min(d.values()) 然后计算该值是否平局?
    • @zenlc2000,最好使用语言提供的工具。检查我的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-12-09
    • 2017-01-18
    • 2013-11-27
    • 2021-10-15
    • 2019-03-01
    • 2020-02-13
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多