[英]Convert singular words in a list into plurals
我有一個包含幾個單數單詞的列表。
作為練習字符串切片和列表切片的一種方法,我正在嘗試將列表中的單數單詞變成復數 forms。
在嘗試編寫此問題的代碼之前,首先創建如下規則:
A. 如果名詞的結尾是“y”,除“y”外,加“ies”。
B.如果名詞的結尾是“f”或“fe”,除“f”和“fe”外,加“ves”。
C。 如果名詞以“s”、“x”、“z”、“ch”或“sh”結尾,則加“es”。
D.如果名詞以“us”結尾,除“us”外加“i”。
E. 如果以上4種情況都沒有,加“s”。
使用上述規則,我嘗試編寫以下代碼。
word=[** singular word list **]
plural = []
slice = []
for i in range(0, len(word)):
slice = list(word[i])
result = ' '
if slice[len(slice):] == 'y':
slice.remove('y')
slice.append('ies')
elif slice[len(slice)-1:] == 'f':
slice.remove('f')
slice.append('ves')
elif slice[len(slice)-2:] == 'fe':
slice.remove('fe')
slice.append('ves')
elif slice[len(slice)-1:] == 's' or slice[len(slice)-1:] == 'x' or slice[len(slice)-1:] == 'z' or slice[len(slice)-2:] == 'ch' or slice[len(slice)-2:] == 'sh':
slice.append('es')
elif slice[len(slice)-2:] == 'us':
slice.remove('us')
slice.append('i')
else:
slice.append('s')
#result = result.join(slice)
plural.append(slice)
print(plural)
問題是,我設置的規則不能正常工作。
當我運行這段代碼時,列表中的單詞沒有按照規則集進行轉換,只有else語句中的's'附加到單詞上。 此外,在 output 值的字符之間應用空格。
['a p p l e s', 'a x e s s', 'b o o k s', 'b o x s', 'b u z z s', 'c a t s', 'c a n t u s s', 'c h u r c h s', 'd i s h s', 'k n i f e s', 'l a d y s', 'l e a f s', 'p i t c h s', 's t i m u l u s s', 't a x i s', 'w i s h s', 'w o l f s']
我怎么解決這個問題?
謝謝你。
對列表進行切片會返回一個列表,但您正在與一個字符串進行比較,因此比較總是失敗。
另一個問題是remove()
刪除了第一個匹配項,但您想刪除最后的字母。 當您執行slice.remove('y')
時,如果單詞中有另一個y
,它將做錯事。 相反,使用切片分配來替換結尾。
索引到列表時,您可以使用負索引從末尾開始計數,因此您不必繼續編寫len(slice)
。
if slice[-1:] == ['y']:
slice[-1:] = ['ies']
elif slice[-1:] == ['f']:
slice[-1:] = ['ves']
elif slice[-2:] == ['f', 'e']:
slice[-2:] = ['ves']
elif slice[-1:] == 's' or slice[-1:] == 'x' or slice[-1:] == 'z' or slice[-2:] == ['c', 'h'] or slice[-2:] == ['s', 'h']:
slice.append('es')
elif slice[-2:] == ['u', 's']:
slice[-2:] = ['i']
else:
slice.append('s')
這是略有不同的方法。 for 循環從word
列表中取出每個單詞,並使用endswith()
方法檢查世界的結尾。 如果條件為真,它將獲取原始單詞的一部分,並根據您在問題中陳述的規則將后綴添加到modifiedWord
中,然后將其添加到plural
列表中。
正如我在評論中提到的,我還從單詞列表中刪除了已經復數的單詞'axes'
。
這是一個工作代碼:
word = ['apple', 'axe', 'book', 'box', 'buzz', 'cat', 'cantus', 'church', 'dish', 'knife', 'lady', 'leaf', 'pitch', 'stimulus', 'taxi', 'wish', 'wolf']
plural = []
for i in word:
modifiedWord = ""
if i.endswith("y"):
modifiedWord = i[0:len(i) -1] + "ies"
elif i.endswith("f"):
modifiedWord = i[0:len(i) -1] + "ves"
elif i.endswith("f"):
modifiedWord = i[0:len(i) -2] + "ves"
elif i.endswith("s") or i.endswith("x") or i.endswith("z") or i.endswith("ch") or i.endswith("sh"):
modifiedWord = i + "es"
elif i.endswith("us"):
modifiedWord = i[0:len(i) -2] + "i"
else:
modifiedWord = i + "s"
plural.append(modifiedWord)
print(plural)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.