现在我正试图创造一个反派的翻译。也就是说,在一个辅音或一行几个辅音之后,在这些字母上加上“op”。举个例子,奶牛会变成鸡冠,或者街道会变成街道。到目前为止,我得到的是:
def oppish(phrase): #with this function I'm going to append 'op' or 'Op' to a string.
consonants = ['b','c','d','f','g','h','i','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']
vowels = ['a', 'e', 'i', 'o', 'u'] #this and the preceding line create a variable for the vowels we will be looking to append 'op' to.
if phrase == '': #error case. if the input is nothing then the program will return False.
return False
phrase_List = list(' ' + phrase) # turns the input phrase into a list which allows for an index to search for consonants later on.
new_phrase_List = list() #creates new list for oppish translation
for i in range(1, len(phrase_List)):
if phrase_List[i] == phrase_List[1]:
new_phrase_List.append(phrase_List[i])
elif phrase_List[i] in consonants:
new_phrase_List.append('op') #adds op to the end of a consonant within the list and then appends it to the newlist
new_phrase_List.append(phrase_List[i]) #if the indexed letter is not a consonant it is appended to the new_phrase_list.
print 'Translation: ' + ''.join(new_phrase_List)
oppish('street')
这里唯一的问题是上面的代码生成了这个
^{pr2}$我不知道我做错了什么,我试着通过可视化工具,但没有用。感谢所有的帮助!:)
我认为问题出在你处理问题的方法上。 尝试这样做:
编辑:尽管这个问题有一个更好的(pythonic)答案(多亏了dano),但这个问题不需要额外的库
小贴士:不要浪费时间来定义元音和辅音。事实上,有元音和非元音
这非常适合^{} ,它允许您使用键函数将iterable中的项分组。组将累积,直到键函数的返回值发生更改,此时
group
by将生成键函数的返回值,并在累积组上生成迭代器。在本例中,如果字母是元音,我们希望键函数返回True
。这样,我们将得到一组连续的辅音,以及一组连续的元音从groupby
返回:输出:
^{pr2}$相关问题 更多 >
编程相关推荐