在python中创建拼写检查函数

2024-09-28 01:59:45 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我是python新手,目前正在指导如何使用python编写基本函数。我被要求做一个函数,根据已知的正确拼写检查单词的拼写

如果单词正确,则函数返回“correct”;如果出现2个或更少的错误,则返回“几乎”;如果出现3个或更多错误,则函数返回“error”。例如,如果函数if的形式 spell(correct, guess)
spell('hello', hello')将返回'correct',spell('hello','nello')将返回'small',spell('hello','hejje')将返回'error'

我的代码是:

def spell(correct, guess):
    answer=list(guess)
    right=list(correct)
    w=0

    for i in answer and right:
        if answer[i]==right[i]:
            w=w
        else:
            w=w+1
    if w==0:
        print("correct")
    elif w==1 or w==2:
        print("Almost")
    else:
        print("Wrong") 

我试图通过将两个列表之间的差异数相加来定义函数。但我不断得到错误“列表索引必须是整数或切片,而不是str”,我不知道另一种解决问题的方法。我想知道编写代码的最佳方法,这样我就可以尝试我的代码工作


Tags: 函数代码answerrighthelloif错误error
2条回答

假设您有类似word1 = 'hello'word2 = 'nello'的东西,那么您可以这样做:

sum(word1[i] != word2[i] for i in range(min(len(word1), len(word2))))

您的无法工作的原因是您如何使用for循环:

for i in answer and right:

如果answer['h', 'e', 'l', 'l', 'o'],那么i将是该列表中的每个字符。只要计算为right的是True,并且因为right是一个非空列表,它就会。所以i将是'hello'中的每个字符,这就是为什么会出现错误

编辑:for循环的更简单版本:

for i in range(len(answer)):
    if answer[i] != right[i]:
        w = w + 1

两个问题

(一) 当你说

for i in answer and right:

代码仅在right中迭代。您需要清楚地知道要遍历哪个列表。解决这个问题的办法与第二个问题有关

(二) 遍历字符串列表将返回字符串

a = ["b", "c", "d"]
for i in a:
    print(a[i])

没有道理a[i]表示a的第i个元素,但在本例中,i实际上是您正在迭代的字符串。这相当于说a["b"]

相反,您应该遍历两个列表的索引:

for i in range(len(answer)):
    if answer[i] == right[i]:
        etc...

相关问题 更多 >

    热门问题