如果使用in关键字,则有一个更简单的解决方案.您甚至不需要拆分字母即可检查其中是否包含给定字符:
year3wordlist = ['asdf123', 'dsfgsdfg435']
total_sum = 0
for word in year3wordlist:
word_sum = 0
for char in word:
if char in string.ascii_letters:
word_sum += 1
total_sum += word_sum
# Length of characters in the ascii letters alphabet:
# total_sum == 12
# Length of all characters in all words:
# sum([len(w) for w in year3wordlist]) == 18
编辑:
由于OP表示他正在尝试创建拼字比赛,所以让我尝试更具体地回答.正确拼写的单词和相似的字符串之间的距离可以用许多不同的方法来测量.最常见的方式之一称为“ edit distance”或“ Levenshtein distance”.这表示将输入字符串重写为“正确”字符串所需的插入,删除或替换的次数.
您可以在Python-Levenshtein软件包中找到实现的距离.您可以通过pip安装它:
$sudo pip install python-Levenshtein
然后像这样使用它:
from __future__ import division
import Levenshtein
correct = 'because'
student = 'becuase'
distance = Levenshtein.distance(correct, student) # distance == 2
mark = ( 1 - distance / len(correct)) * 10 # mark == 7.14
最后一行只是关于如何从学生的输入和正确答案之间的距离中得出分数的建议.