2013-09-25 93 views
0

我最近開始學習如何使用Codecademy.com在Python中進行編程,它使用Python 2.7,雖然我在計算機上安裝了2.7.3和3.3.2,但我正在使用Python 3創建程序。Python程序輸出不正確?

該程序本身是一個簡單的概念證明,從網站上的教訓,豬拉丁語翻譯。我決定更進一步,將其發展到處理整個段落的文本,包括空間和其他這樣的實例,而不是隻有一個單詞,這是該程序最初做的。

我現在的問題是,無論我接受什麼,程序只輸出相同的東西,我不知道爲什麼。

它只輸出'這還沒完成'。代碼的打印,這是多個單詞的實例,顯然還沒有完成。

下面的代碼:

pyg = 'ay' 

raw_input = input('Enter your text here. Numbers are not allowed. ') 

if len(raw_input) > 0 and raw_input.replace(' ', '').isalpha: 
lower_input = raw_input.lower() 

if lower_input[0] == " ": 
    lower_input = lower_input[1:] 

word_spacing = lower_input.replace(' ', '/') 

if word_spacing.find('/'): 
    print('This isn\'t finished yet.') 

else: 
    first_letter = raw_input[0] 

    if first_letter == 'a' or 'e' or 'i' or 'o' or 'u': 
     output = raw_input[1].upper() + raw_input[2:] + first_letter + pyg 
     print(output) 

    else: 
     output = raw_input[0].upper() + raw_input[1:] + pyg 
     print(output) 

else: 
print('The text you entered is invalid.') 

end = input('Press Enter to exit') 

如果有人能讀懂了這些代碼並幫我調試這一點,那將是真正的幫助。一直盯着它,但仍然沒有得到它。

回答

2

raw_input.replace(' ', '').isalpha

你沒有調用函數isalpha,只引用它。添加()


if first_letter == 'a' or 'e' or 'i' or 'o' or 'u':

是一樣的:

if (first_letter == 'a') or ('e') or ('i') or ('o') or ('u'):

這將永遠是真實的,因爲非空字符串被認爲是真實的。

將其更改爲:

if first_letter in 'aeiou':


你也忘了在底部縮進print('The text you entered is invalid.')

+0

呃,格式化在這裏很奇怪,必須習慣它。在我的原始代碼中,縮進全部都是正確的,我會盡量在稍後提交時更好地檢查它。謝謝您的幫助。 – Duskite

+0

@Duskite沒問題:)。不要忘記[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):) – TerryA

0

最後的else塊沒有匹配if。省略最後的「else:」並且可能工作。