嗨,我正在爲codeacademy上的python在線教程,我已經創建了一個函數pyg拉丁語翻譯器,它使用raw_input並將它變成pyglatin中的一個單詞,但是,當我嘗試將此翻譯器變爲一個函數,需要一個單詞並返回一個單詞在pyg拉丁我得到一個錯誤。這些工作的方式有根本的區別嗎?初學者調試函數
這裏是功能譯者:
original = raw_input("Enter a word in English to translate to Pyg Latin:")
vowels = ["a", "e", "i", "o", "u"]
if len(original) > 0 and original.isalpha():
word = original.lower()
if word[0] in vowels:
translation = word + "ay"
print translation
else:
translation = word[1:] + word[0] + "ay"
print translation
else:
print "This is not a valid entry! Please try again."
# Here is the function that comes up with an error:
vowels = ["a", "e", "i", "o", "u"]
def pyglatin(eng):
if eng.isalpha() and len(eng) > 0:
word = eng.lower()
if word[0] in vowels:
return word + "ay"
else:
return word[1:] + word[0] + "ay"
else:
return False
當我嘗試和調用函數和類型pyglatin(螞蟻)爲例,看看這個詞螞蟻的翻譯,我得到這個錯誤:
回溯(最近通話最後一個):
文件 「」,1號線,在 pyglatin(螞蟻) NameError:名字 '蟻族' 沒有定義
請注意,所有的縮進都是正確的,但我可能沒有在這裏顯示正確的間距。我真的只想知道我的邏輯是否存在根本問題。 謝謝!
你得到什麼錯誤?發佈完整的追溯。你的函數看起來不錯,所以它可能在代碼中的其他地方。 – Blender 2013-04-27 05:57:19
這可能不會解決你的問題,但有幾點建議:'元音= [「a」,「e」,「i」,「o」,「u」]'可以用'vowels =「aeiou」 '因爲每個列表項只有一個字符長。 'len(eng)> 0'可以替換爲'eng',因爲如果字符串的長度大於零,那麼字符串是真的,否則就是僞造的。 – icktoofay 2013-04-27 06:01:54
@icktoofay - 它比這更簡單:'eng.isalpha()'如果字符串爲空則返回false,所以這是唯一需要的測試。 – 2013-04-27 06:22:16