2012-07-11 105 views
0

我有一個包含數千個單詞的文本文件。我必須計算按字母順序排列的單詞數量。以下是從一堆其他的代碼,我已經得到了切出:查看單詞列表並計算按字母順序排列的單詞

Counter = 0 
    for word in wordStr: 
    word = word.strip() 
    if len(word) > 4: 
    a = 0 
    b = 1 
    while word[a] < word[b]: 
     a += 1 
     b += 1 
     Counter += 1 
return Counter 

有一些明顯的事情錯在這裏,我知道,但不知道如何解決它。我的推理是這樣的:如果單詞的第一個字母是該單詞的第二個字母<,則該單詞的該部分是按字母順序排列的。所以我需要對一個單詞進行這種操作,直到我發現整個單詞是按字母順序排列或遇到字母a>字母b的情況。

此刻,我的代碼增加了計數器,當word [a] < word [b]。不過,我需要改變這個,所以只有當整個單詞是按字母順序排列時,纔會增加,而不僅僅是前兩個字母。我的另一個問題是我得到的錯誤,因爲最終while循環試圖比較字符串索引,因爲我增加a和b的方式不存在。我知道很多東西都需要重寫,我已經把邏輯壓低了......只是努力實現它。

編輯:我忘了我以前有過這個問題,有人在我的另一個問題幫助我解決它。對困惑感到抱歉。

+0

is this homewr0K? – DarthVader 2012-07-11 19:37:51

+1

可能的重複[你如何判斷一個單詞在python中是否按字母順序?](http://stackoverflow.com/questions/9882526/how-do-you-tell-if-a-word-is-in -alphabetical-order-in-python)以及[如何確定在Python中按字母順序拼寫的單詞](http://stackoverflow.com/questions/11388032/how-to-figure-out-if -a-word-in-spelling-in-alphabetical-order-in-python),這兩個問題都是由同一個用戶提出的! – 2012-07-11 19:39:33

+0

只需使用'>'或'<'來匹配哪個單詞更大或更短。 – 2012-07-11 19:41:11

回答

4

查看單詞是否按字母順序排列的簡單方法是對其進行排序,然後查看排序後的版本是否與原始版本相同。 Python有一個函數sorted()可用於對字符串進行排序;然而,結果會列爲清單。因此,您需要將已排序的版本轉換回字符串,或者將原始字符串轉換爲列表(第二個比較容易,只需將字符串傳遞到list()),然後再比較它們。

您可能還想首先將字符串轉換爲小寫(或大寫 - 無關緊要,只要它是一致的),因爲這會影響排序順序:所有大寫字母都在小寫字母之前,所以Cat將按字母順序測試,儘管它不是。您可以使用字符串對象上的.lower()方法執行此操作。

由於這看起來像作業,我不會發布工作代碼,但它應該是非常簡單的,從我給你的東西放在一起。

相關問題