【发布时间】:2013-12-06 11:59:54
【问题描述】:
我是 python 的超级新手。我有点坚持我的课堂练习之一。 问题是这样的:您有一个包含字符的文件,即单词。 (我仍处于所有术语混淆的阶段,如果这不是正确的术语,我深表歉意) file.txt 内容示例:accbd
问题要求我将文件导入 python 编辑器,并确保没有出现比字母表中晚于它的字母更多的字母。例如a 不能比 b 更频繁地出现; b 不能多于 c,以此类推。在示例文件中,c 的出现频率高于 d,因此我需要提出错误消息。
这是我可怜的尝试:
def main():
f=open('.txt','r') # 1st import the file and open it.
data = f.read() #2nd read the file
words = list(data) #3rd create a list that contains every letter
newwords = sorted(words) # sort according to alphabetical order
我被困在最后一部分,即计算前一个词不会比后一个词出现更多,依此类推。我尝试了两种方法,但都没有奏效。这是试验1: 从集合导入计数器
for i in newwords:
try:
if counter(i) <=counter(i+1):
print 'ok'
else:
print 'not ok between indexes %d and %d' % (i, i+1)
except:
pass
二审类似
for i in newwords:
try:
if newwords.count(i) <= newwords.count(i+1):
print 'ok'
else:
print 'ok between indexes %d and %d' % (i, i+1)
except:
pass
按顺序比较每个单词的计数的正确方法是什么?
【问题讨论】:
-
查看 collections.Counter(string) - 从那里可能会很容易。也就是说,除非你的教授希望你用 collections.defaultdict(int) 甚至是普通的 dict 来做这件事。
标签: python