我有一个包含数千个单词的文本文件。我必须按字母顺序计算单词的数量。以下是从我的一堆其他代码中截取的:
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的情况。
目前,当单词[a]<单词[b]。然而,我需要改变这一点,这样它只会在整个单词按字母顺序排列时增加,而不仅仅是前两个字母。我的另一个问题是,我会出错,因为最终while循环试图比较由于我递增a和b的方式而不存在的字符串索引。。只是在努力实现它。
编辑:我忘了我以前遇到过这个问题,我的另一个问题上有人帮我解决了。很抱歉造成混乱。
查看单词是否按字母顺序排列的一个简单方法是对其进行排序,然后查看排序后的版本是否与原始版本相同。Python有一个函数sorted()
,可以用来对字符串进行排序;然而,结果将以列表的形式出现。因此,在对它们进行比较之前,您需要将排序后的版本转换回字符串,或者将原始字符串转换为列表(第二种更容易,只需将字符串传递到list()
中)。
您可能还想先将字符串转换为小写(或大写——只要它一致就没关系),因为这会影响排序顺序:所有大写字母都在小写字母之前,所以Cat
会测试为已经按字母顺序排列,即使它不是。您可以在字符串对象上使用.lower()
方法来执行此操作。
由于这看起来像是家庭作业,我不会发布工作代码,但根据我给你的内容,它应该很简单。