gpt4 book ai didi

python - 挣扎于字符串字符

转载 作者:行者123 更新时间:2023-12-04 08:37:02 26 4
gpt4 key购买 nike

我正在尝试解决有关 Python 字符串的练习。练习说: 编写一个函数,该函数接受一个字符串单词并返回包含给定单词的声音元素的字符串列表。
声音元素是 1 个或多个辅音后跟 1 个或多个元音的最大序列。换句话说,我应该遍历一串字符并在每次元音后跟辅音时将其拆分。
例子:
输入中给出的以下字符串:

S = 'unconditionally'
应该返回以下列表
L = ['u','nco','ndi','tio','na','lly'] 
为了解决这个练习,我编写了以下函数:
def split_words(S): 
string = ''
syllables = []
vowels = ['a','e','i','o','u','j','y']
for i in range(len(S)):
if S[i] not in vowels:
string += S[i]
elif S[i] in vowels and S[i+1] not in vowels:
string += S[i]
syllables.append(string)
string = ''
return syllables
哪个应该可以解决。问题是每次运行程序时都会出现索引超出范围的错误。我知道问题出在 elif 语句中,我不知道如何摆脱。
有没有办法在不导入任何外部库的情况下解决这个练习?
任何帮助将不胜感激

最佳答案

你迭代直到最后一个字符的索引:

for i in range(len(S)):
你有这条线:
elif S[i] in vowels and S[i+1] not in vowels:
如果 iS 的最后一个索引,那么它会在 S[i+1] 上抛出错误
编辑:你可以使用这个:
def split_words(S): 
string = ''
syllables = []
vowels = ['a','e','i','o','u','j','y']
for i in range(len(S)):

if S[i] not in vowels:
if len(string) == 0 or not string[-1] in vowels: #here I check if length of string is 0
#in this case I can append letter to it. And also if last letter (`string[-1]`) isn't a vowel,
#then also I can add this letter to string
string += S[i]
else: # if last letter was vowel then we reset string.
syllables.append(string)
string = ''
string += S[i]

else:
string += S[i]
syllables.append(string)
return syllables
我们可以进一步简化代码,因为我们有 string += S[i]在每个 if-else 块中:
def split_words(S): 
string = ''
syllables = []
vowels = ['a','e','i','o','u','j','y']
for i in range(len(S)):

if S[i] not in vowels and len(string) > 0 and string[-1] in vowels:
syllables.append(string)
string = ''
string += S[i]
syllables.append(string)
return syllables

关于python - 挣扎于字符串字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64755912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com