这可能很简单,但我无法发现我犯错误的地方。
我写了一个简单的程序来读取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
提前致谢,
约翰
答案 0 :(得分:1)
问题是python中不存在charAt
。
您可以直接使用:'for my in my_word`。
注意:
您可以使用内置str.isalnum()
进行测试
valid_characters仅包含字母的大写版本