2012-03-17 61 views
-1

問題:編寫一個程序,初始化一個空列表,然後提示用戶輸入單個單詞,並不斷提示單個單詞,將每個單詞添加到列表中,直到用戶輸入單個句點字符' 「。然後打印所有成對的單詞。比較應該不區分大小寫。 - 可以簡單地使用字典,但不是必需的。可以根據看到的功能定義函數。空列表中的Python Anagrams

我已經嘗試了幾個版本的代碼,我似乎無法弄清楚我做錯了什麼。有人可以幫助我指出我正確的方向/給我一個類似的代碼示例嗎?我只是如此卡住。

def areAnagrams(inputList): 
    """Return inputList if words are anagrams, False otherwise""" 
    inputList = sorted(inputList.lower()) 
    return inputList 

inputList = raw_input ("Enter a word period to end: ") 
list = [] 
while inputList != '.': 
    anagram = inputList 
    list.append(anagram) 
    inputList = raw_input("Enter a word (period to end): ") 


print "Anagrams:", areAnagrams(inputList) 
+2

你實際上沒有實現任何可以找到anagrams的代碼。你所有的'areAnagrams'方法都會返回輸入列表。你期待有人爲你做功課嗎? – 2012-03-17 01:28:01

+0

你爲什麼要對列表進行排序? – stark 2012-03-17 01:30:30

+0

不,我不期待任何事。剛剛迷失在這個特殊的問題。我創建了一個關於我們在課堂上使用的anagrams的示例問題(其中輸入了兩個單詞而非排序)。想知道我是否接近正確的軌道,而我不是。 – user1210588 2012-03-17 01:40:11

回答

1

只是集中在部分地方你檢查兩個詞是否字謎,你的函數需要檢查兩個單詞是否是相同的長度,幷包含所有相同的字母。所以你可以這樣做:

def areAnagrams(word1, word2): 
    if len(word1) == len(word2): 
     word1Letters = sorted(list(word1)) 
     word2Letters = sorted(list(word2)) 
     if word1Letters == word2Letters: 
      return True 
     else: 
      return False 
    else: 
     return False 
+0

這個代碼比它應該更復雜,只是做'def areAnagrams(w1,w2):return sorted(list(w1))== sorted(list(w2))' – Doboy 2012-03-18 00:05:25

+0

@Doboy是的,你很可能對。更簡單的版本只會在邊緣情況下失敗,其中一個單詞包含字母后面的額外字母(比如'rap','prat'),並且假定長度約束適用。 – Marius 2012-03-18 02:27:55