【问题标题】:How to count number of vowels in list without using libraries in python? [duplicate]如何在不使用 python 库的情况下计算列表中元音的数量? [复制]
【发布时间】:2020-12-05 15:17:55
【问题描述】:

我正在尝试将数字转换为其拼写字母并使用字典然后选择字符串

如何将每个用户输入的数字拼写字符串从 dict 存储到列表中。 这是我尝试过的

num2words = {1: 'One', 2: 'Two', 3: 'Three', 4: 'Four', 5: 'Five', \
             6: 'Six', 7: 'Seven', 8: 'Eight', 9: 'Nine', 10: 'Ten', \
            11: 'Eleven', 12: 'Twelve', 13: 'Thirteen', 14: 'Fourteen', \
            15: 'Fifteen', 16: 'Sixteen', 17: 'Seventeen', 18: 'Eighteen', \
            19: 'Nineteen', 20: 'Twenty', 30: 'Thirty', 40: 'Forty', \
            50: 'Fifty', 60: 'Sixty', 70: 'Seventy', 80: 'Eighty', \
            90: 'Ninety', 0: 'Zero'}
            
def n2w(n):
        try:
            return num2words[n]
        except KeyError:
            try:
                return num2words[n-n%10] + num2words[n%10].lower()
            except KeyError:
                return 'Number out of range'            

n = int(input())
values = list(map(int , input().split()))
x = []
for i in value:
    x.append(n2w(i))

假设我有元音 ['a' , 'e' , 'i' , 'o' , 'u'] 预定义列表,现在我想计算元音 x 的数量?如何实现?

【问题讨论】:

  • 所有 num2words 与计算元音有什么关系? minimal reproducible example 请。另外:查看num2words.get(n, num2words[n-n%10] + num2words[n%10].lower())
  • Dupe:展示了它是如何为每个字符串完成的。对列表中的每个字符串执行此操作并将它们相加即可完成。

标签: python


【解决方案1】:

将此代码添加到您的程序中:

vowels=['a' , 'e' , 'i' , 'o' , 'u']
string='your string'
n=0
for vowel in vowels:
    n+=string.count(vowel)

【讨论】:

  • 需要 5*n 次通过输入 - 因此,如果您输入 100 万个字符长的单词,它会检查 500 万个字符,这有点低效。
【解决方案2】:

如果我理解正确,您想计算字符串中元音的数量。这是一个非常简单的方法:

VOWELS = ['a', 'e', 'i', 'o', 'u']
input_string = "test string"

n = 0
for char in input_string:
    if char in VOWELS:
        n += 1

print(n)

如果您想要@PatrickArtner 所述的更复杂和优雅的方法

n = sum(v in VOWELS for v in input_string)

【讨论】:

  • ...sum(v in "aeiou" for v in x.lower())...
猜你喜欢
  • 2018-03-21
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多