对可能不太有用的标题表示歉意,我不知道如何将这个问题总结为一句话。
我正在尝试计算 Python 3.10 中一个单词有多少个“单位”长。一个“单位”是(C 表示辅音,V 表示元音)CV 或 VC 或 C 或 V(后两者仅在无法配对时使用)。例如,“件”将为三个单位(
pi-e-ce
或 pi-ec-e
),“队列”将为四个单位 (qu-e-u-e
),“灯罩”将为六个单位 (la-m-p-s-ha-de
)。
我正在努力解决的是如何准确地检测这些单位而不需要迭代每对字母的每个元音和辅音的每个组合。通过迭代来做到这一点效率非常低,但以我目前对 Python 的了解,我想不出更好的办法了。解决这个问题的有效方法是什么?
作为一个额外的(可选)问题,如果引入二合字母,例如“gh”和“th”会怎样?这将使像“大腿”这样的单词(四个单位,t-hi-g-h
)变成只有两个单位(
thi-gh
),但也会使锻炼变得复杂。提前致谢!
def units(word) -> int:
word = ["V" if c in "aeiou" else "C" for c in word]
cnt = 0
while word:
if ''.join(word[:2]) in ('CV', 'VC'):
word.pop(0)
word.pop(0)
cnt += 1
return cnt
for word in ('queue', 'piece', 'lampshade'):
print(word, units(word))