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 的方式而不存在的字符串索引。我知道需要重写很多东西,而且我已经把逻辑搞定了……只是在努力实现它。

编辑:我忘记了我以前遇到过这个问题,有人在我的另一个问题上帮助我解决了这个问题。对困惑感到抱歉。

4

1 回答 1

4

查看单词是否按字母顺序排列的一种简单方法是对其进行排序,然后查看排序后的版本是否与原始版本相同。Python 有一个函数sorted()可以用来对字符串进行排序;但是,结果会以列表的形式出现。因此,在比较它们之前,您需要将排序后的版本转换回字符串,或者将原始字符串转换为列表(第二个更容易,只需将字符串传递给list())。

您可能还希望首先将字符串转换为小写(或大写 - 只要它一致就无关紧要),因为这会影响排序顺序:所有大写字母都在小写字母之前,因此Cat已经测试即使不是按字母顺序排列。您可以使用.lower()字符串对象上的方法来执行此操作。

Since this looks like homework I won't post working code but it should be very simple to put together from what I've given you.

于 2012-07-11T19:41:31.297 回答