如果單詞以字母“qu”開頭,則應從元音串列中洗掉字母“u”/“U”,但是,我的代碼不起作用。我怎樣才能解決這個問題?
對于背景關系,此代碼用于將英語轉換為 Pig Latin。
vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]
qu = ["qu", "Qu"]
def firstVowelIndex(w):
for index, char in enumerate(w):
if char in vowels:
return index
def encryptVow(w):
w = w "-way"
return w
def encryptCon(w):
wordToList = list(w)
if wordToList[0:2] in qu:
vowels.pop(4)
vowels.pop(9)
index = firstVowelIndex(w)
return w[index:] "-" w[:index] 'ay'
vowels.append("y")
vowels.append("Y")
index = firstVowelIndex(w)
return w[index:] "-" w[:index] 'ay'
def encrypt(w):
wordToList = list(w)
if wordToList[0] in vowels:
return encryptVow(w)
elif wordToList[0] not in vowels:
return encryptCon(w)
if __name__ == '__main__':
print(encrypt("quiz"))
uj5u.com熱心網友回復:
首先,您將vowels其用作全域變數。沒關系,因為您
encrypt()只呼叫一次。但是如果你多次使用它,一旦字母'u'和'U'被洗掉,在遇到以'q'開頭的單詞后它們就不會出現。
每次encrypt()呼叫該函式時,它都會多次附加“y”和“Y”。
方法pop()不能用字串呼叫,必須用整數呼叫。使用search().
這是您的程式的作業版本(我添加了一些對 的呼叫encrypt())。
vowels = ['a','e','i','o','u','A','E','I','O','U']
def firstVowelIndex(w):
for index, char in enumerate(w):
if char in vowels:
return index
def encryptVow(w):
return w '-way'
def encryptCon(w):
if w.lower().startswith('q'):
vowels.pop(vowels.index("u"))
vowels.pop(vowels.index("U"))
index = firstVowelIndex(w)
else:
vowels.append("y")
vowels.append("Y")
index = firstVowelIndex(w)
return w[index:] '-' w[:index] 'ay'
def encrypt(w):
if w[0] in vowels:
return encryptVow(w)
else:
return encryptCon(w)
if __name__ == '__main__':
print(encrypt("quiz"))
print(encrypt("art"))
print(encrypt("boat"))
print(encrypt("part"))
它列印以下結果
iz-quay
art-way
oat-bay
art-pay
但是,在函式print(vowels)的開頭添加。firstVowelIndex()您將看到vowels串列如何變化。
查閱有關全域變數的 python 檔案。
uj5u.com熱心網友回復:
我會說這應該做你在問題中提出的問題。
if word.lower().startswith("qu"):
vowels.remove("U")
vowels.remove("u")
PS:您不必將字串轉換為串列,因為字串是可迭代的字符。因此,您可以對其進行子索引,而無需更改資料型別。因此,您也可以使用類似的東西:
if word[0:2].lower() == "qu":
vowels.remove("U")
vowels.remove("u")
但我想說使用字串方法startswith()更明確。
還要考慮如果您vowels對多個單詞使用相同的串列。上面的代碼將有效地引發一個ValueError原因,您之前已經洗掉了這些元音。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515894.html
標籤:Python列表if 语句
