Python - 代码中的错误

时间:2016-06-08 13:43:09

标签: python

这可能很简单,但我无法发现我犯错误的地方。

我写了一个简单的程序来读取wordfile中的单词(不必是字典单词),对字符求和并从最低到最高打印出来。 (PART1)

然后,我在这个程序之后编写了一个小脚本来过滤和搜索那些只包含字母,字符的单词。 (PART2)

虽然第一部分正常工作,但第二部分什么都不打印。我认为这个错误出现在' print ch'其中没有打印转换为字符串的列表的字符。请告知可能出现的错误

#!/usr/bin/python

# compares two words and checks if word1 has smaller sum of chars than word2
def cmp_words(word_with_sum1,word_with_sum2):
    (word1_sum,__)=word_with_sum1
    (word2_sum,__)=word_with_sum2
    return word1_sum.__cmp__(word2_sum)

# PART1
word_data=[]
with open('smalllist.txt') as f:
    for l in f:
        word=l.strip()
        word_sum=sum(map(ord,(list(word))))
        word_data.append((word_sum,word))

word_data.sort(cmp_words)

for index,each_word_data in enumerate(word_data):
    (word_sum,word)=each_word_data

#PART2
# we only display words that contain alphabetic characters and numebrs
valid_characters=[chr(ord('A')+x) for x in range(0,26)] + [x for x in    range(0,10)]

# returns true if only alphabetic characters found 
def only_alphabetic(word_with_sum):
    (__,single_word)=word_with_sum

    map(single_word.charAt,range(0,len(single_word)))

    for ch in list(single_word):
        print ch    # problem might be in this loop -- can't see ch
        if not ch in valid_characters:
            return False
    return True

valid_words=filter(only_alphabetic,word_data)
for w in valid_words:
    print w

提前致谢,

约翰

1 个答案:

答案 0 :(得分:1)

问题是python中不存在charAt

您可以直接使用:'for my in my_word`。

注意:

  1. 您可以使用内置str.isalnum()进行测试

  2. valid_characters仅包含字母的大写版本