2015-04-17 42 views
1

目前,我已經做到這一點,程序可以計算給定的消息中的字母頻率,但在「降序」功能它一直說LetterCountTuple沒有被定義,所以它排序,它不會打印出「new_letter_count」,它不會反轉「new_letter_count」,它不會打印出降序我以爲我定義它在函數中,並在主,上午我錯過了什麼?任何人都可以幫忙!我到目前爲止的代碼是這樣的:我想做一個使用python的頻譜分析程序,但我有問題

def main(): 
    message = input("please enter message") 
    letterCount = getLetterCount(message) 

    LetterCountTuple,new_letter_count,descending = descending_order(letterCount) 


def getLetterCount(message): 
    letterCount = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0, 'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0, 'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0} 
    for letter in message.upper(): 
     if letter in letterCount: 
      letterCount[letter] += 1 

    print(letterCount) 
    return letterCount 


def descending_order(letterCount): 
    letterCountTuple = letterCount.items() 
    new_letter_Count = LetterCountTuple.sort 
    print(new_letter_Count) 
    descending = reversed(new_letter_Count) 
    print(descending) 
    return new_letter_Count, descending 

main() 
+0

非常感謝球員命名變量! – eliot

回答

2

您有多個問題,所以你不會可以解壓3 descending_order返回兩個值,你也永遠不會調用排序LetterCountTuple.sort,你缺少括號LetterCountTuple.sort()

LetterCountTuple定義主要不在descending_order,它應該是letterCountTuple。

您還需要new_letter_Count = sorted(letterCountTuple),您目前正在分配new_letter_CountNone(如果你真的把它),這是從.sort的返回值,因爲它是一個就地操作:

def descending_order(letterCount): 
    letterCountTuple = letterCount.items() 
    # create actual list of sorted letterCountTuple 
    new_letter_Count = sorted(letterCountTuple) 
    # reverse the list 
    descending = new_letter_Count[::-1] 
    # return three elements to unpack in main 
    # LetterCountTuple,new_letter_count,descending = descending_order(letterCount) 
    return letterCountTuple ,new_letter_Count, descending 

我用new_letter_Count[::-1]扭轉如果您想查看列表,則列表將會返回一個listreverseiterator對象,您必須調用該對象列表,因此在這種情況下它有點冗餘。

在一個側面說明,你應該使用下劃線和小寫字母letter_count_tuplenew_letter_count等。

相關問題