计算列表中的初学者词:Python

h-m*_*man 4 python list

处理一个非常常见的问题,以确定单词是否是初学者(所有字母按字母顺序排列).我可以用"Think Python"中的几种方式做一个单词; 但是,希望能够遍历一个单词列表,确定哪些是初学者并计算那些是初学者.

def start():
    lines= []
    words= []
    for line in open('word_test1.txt'):
        lines.append(line.strip())
    numlines=len(lines)
    count = 0

    for word in lines[:]:
        i = 0
        while i < len(word)-1:
            if word[i+1] < word[i]:
                return 
            i = i+1
        print (word)
    count= count + 1
    print (count)
start()
Run Code Online (Sandbox Code Playgroud)

我认为我的问题在于"while i"循环中的"return".在我正在使用的列表中,至少有三个初学者的话.上面的代码读取前两个(它们是第一个条目),打印它们,计算它们但是在下面的非初始化单词中断出循环并结束程序.

我是编程的新手,这花了我几个小时的时间.

Ray*_*ger 11

不需要对此进行低级编程:-)

def is_abcedarian(s):
    'Determine whether the characters are in alphabetical order'
    return list(s) == sorted(s)
Run Code Online (Sandbox Code Playgroud)

使用过滤器来运行单词列表:

>>> filter(is_abcedarian, ['apple', 'bee', 'amp', 'sun'])
['bee', 'amp']
Run Code Online (Sandbox Code Playgroud)

  • 可以使用列表理解来完成"过滤器"位. (3认同)
  • oneliner:filter(`lambda s:list(s)== sorted(s),['apple','bee','amp','sun']) (2认同)