跳到主要内容

Python 程序计算每个元音的数量

要理解这个例子,你需要了解以下Python 编程主题的知识:

源代码:使用字典

# 程序用于计算每个元音字母的数量
# 元音字母字符串
vowels = 'aeiou'

ip_str = 'Hello, have you tried our tutorial section yet?'

# 使其适用于不区分大小写的比较
ip_str = ip_str.casefold()

# 创建一个字典,每个元音字母作为键,值为 0
count = {}.fromkeys(vowels, 0)

# 计算元音字母的数量
for char in ip_str:
if char in count:
count[char] += 1

print(count)

输出

{'o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3}

在这里,我们取了一个存储在 ip_str 中的字符串。使用方法 casefold(),我们使其适用于不区分大小写的比较。基本上,这个方法返回字符串的小写版本。

我们使用字典方法 fromkeys() 构造一个新字典,每个元音字母作为其键,所有值等于 0。这是计数的初始化。

接下来,我们使用 for 循环 遍历输入字符串。

在每次迭代中,我们检查字符是否在字典键中(如果它是元音字母则为 True),如果为真,则将值增加 1。

源代码:使用列表和字典推导

# 使用字典和列表推导
ip_str = 'Hello, have you tried our tutorial section yet?'

# 使其适用于不区分大小写的比较
ip_str = ip_str.casefold()

# 计算元音字母的数量
count = {x: sum([1 for char in ip_str if char == x]) for x in 'aeiou'}

print(count)

该程序的输出与上面相同。

在这里,我们在 字典推导 中嵌套了一个 列表推导,以单行代码计算元音字母的数量。

字典推导针对所有元音字母运行,而嵌套在字典推导内的列表推导检查字符串中的任何字符是否与该特定元音字母匹配。

最后,生成了一个对于每个元音字母数量的 1 列表。sum() 方法用于计算每个列表的元素之和。

然而,这个程序运行速度较慢,因为我们对每个元音字母都要遍历整个输入字符串。