如何在 Python 中检测元音与辅音?
在英文字母表中,元音是字母 a、e、i、o 和 u。包含元音的单词示例包括"apple"、"elephant"、"igloo"、"octopus"和"umbrella"。
辅音是英文字母表中的所有其他字母,包括 b、c、d、f、g、h、j、k、l、m、n、p、q、r、s、t、v、w、x、y 和 z。包含辅音的单词示例包括"ball"、"cat"、"dog"、"fish"、"green"和"hat"。
以下是一些代码示例,并附有分步说明,用于在 Python 中检测元音和辅音:
使用 for 循环和条件语句
示例
定义字符串以检查元音和辅音。
将元音和辅音的计数器初始化为 0。
循环遍历字符串中的每个字符。
检查字符的小写版本是否在字符串"aeiou"中。如果是,则增加元音计数器。
如果字符是字母但不是元音,则增加辅音计数器。
打印计数器的结果。
string = "lorem ipsum" vowels = 0 consonants = 0 for char in string: if char.lower() in "aeiou": vowels += 1 elif char.isalpha(): consonants += 1 print("元音数量:",vowels) print("辅音数量:", consonants)
输出
元音数量:4 辅音数量:6
使用列表推导和集合
示例
定义字符串以检查元音和辅音。
使用列表推导创建字符串中所有小写元音字符的列表。
使用内置 len() 函数获取列表中的项目数,即元音的数量。
使用另一个列表推导创建字符串中所有非小写的字母字符的列表元音。
使用内置的 len() 函数获取列表中的项目数,即辅音的数量。
打印计数器的结果。
string = "lorem ipsum" vowels = len([char for char in string if char.lower() in {'a', 'e', 'i', 'o', 'u'}]) consonants = len([char for char in string if char.isalpha() and char.lower() not in {'a', 'e', 'i', 'o', 'u'}]) print("元音数量:", vowels) print("辅音数量:",consonants)
输出
元音数量:4 辅音数量:6
使用正则表达式
示例
导入内置的 re 模块,该模块提供对正则表达式的支持。
定义字符串以检查元音和辅音。
使用 re.findall() 函数查找正则表达式模式"[aeiou]"的所有匹配项,该模式匹配任何小写元音,忽略大小写。
使用内置的 len() 函数获取匹配项的数量,即元音的数量。
再次使用 re.findall() 和正则表达式模式"[b-df-hj-np-tv-z]",该模式匹配任何小写辅音,忽略大小写。
再次使用 len() 获取匹配数,即辅音数。
打印计数器的结果。
import re string = "lorem ipsum" vowels = len(re.findall("[aeiou]", string, re.IGNORECASE)) consonants = len(re.findall("[b-df-hj-np-tv-z]", string, re.IGNORECASE)) print("元音数量:", vowels) print("辅音数量:", consonants)
输出
元音数量:4 辅音数量:6
使用集合和交集
示例
定义字符串以检查元音和辅音。
使用 set() 函数创建字符串中所有字符的集合,并转换为小写。
使用 set.intersection() 方法查找此集合与小写元音集合之间的交集,并使用 len() 函数获取结果集合中的元素数量。
重复步骤 3,但使用小写辅音集合。
打印结果计数器。这里重复的字符算作一个。
string = "lorem ipsum" vowels = len(set(string.lower()).intersection({'a', 'e', 'i', 'o', 'u'})) consonants = len(set(string.lower()).intersection(set('bcdfghjklmnpqrstvwxyz'))) print("元音数量:", vowels) print("辅音数量:", consonants)
输出
元音数量:4 辅音数量:5
使用字典和字符串格式
示例
定义字符串以检查元音和辅音。
创建一个字典,其中包含"元音"和"辅音"的键,并将其初始值设置为 0。
循环遍历字符串中的每个字符。
如果字符的小写版本在字符串"aeiou"中,则增加字典中的"元音"值。
如果字符是字母但不是元音,则增加字典中的"辅音"值。
使用字符串格式打印字典中计数器的结果。
string = "lorem ipsum" count = {'vowels': 0, 'consonants': 0} for char in string: if char.lower() in 'aeiou': count['vowels'] += 1 elif char.isalpha(): count['consonants'] += 1 print("Number of vowels: {vowels}\nNumber of consonants: {consonants}".format(**count))输出
元音数量:4 辅音数量:6
使用 Counter 和 filter
示例
从 collections 模块导入 Counter 类。
定义字符串以检查元音和辅音。
使用 filter() 函数创建一个仅包含小写元音字符的新迭代器,并使用 Counter() 构造函数计算每个元音的出现次数。
对每个元音的计数求和以获得元音的总数。
重复步骤 3-4,但过滤非元音的字母字符并使用 sum() 函数获取辅音的总数。
打印计数器的结果。
from collections import Counter string = "lorem ipsum" count = Counter(filter(lambda c: c.lower() in 'aeiou', string)) vowels = count['a'] + count['e'] + count['i'] + count['o'] + count['u'] count = Counter(filter(lambda c: c.isalpha() and c.lower() not in 'aeiou', string)) consonants = sum(count.values()) print("元音数量:", vowels) print("辅音数量:", consonants)
输出
元音数量:4 辅音数量:6