我正在学习 Python,我有一个问题。
为了学习,我决定制作一个简单的测验程序,它利用函数、类和其他东西作为练习。
我有一个问题一直困扰着我。测验的格式通常是我从一组问题中随机提出一个问题,并且需要输入答案。如果返回的答案是正确的,我将返回一个 True 值并用它来添加到总积分中。
现在的问题是字符串需要准确,否则即使意图正确,答案也会是错误的。我最初通过在定义问题时在类参数中使用集合来解决这个问题,因此如果答案属于该集合,那么它将是预期的。
这种方法的问题是,我不太清楚一个人怎么会拼错某些东西。例如-如果问题的答案是“lovegood”,即使用户输入“lovegod”或“lovegd”或“lovegooood”或“lovegod”,我也想接受答案,并且我无法解释每一个单个可能的拼写错误。
我决定编写一个特殊的函数,该函数获取输入字符串中的每个字符,并将其与字符串中正确答案的每个字符进行比较,如果大多数字符匹配,那么答案就是正确的。这是我能做的事吗?如果可以,怎么做?有更好的方法吗?
如有任何帮助,我们将不胜感激。
最佳答案
这不是一个很容易优雅解决的问题,因为它有点主观。我们在哪里定义足够接近和不够接近的界限?
例如lovegoodddddddddd
、loveeeeee good
可以接受吗?就像你说的,需要考虑的情况太多了。
一个粗略的解决方案是使用 Levenshtein distance这是一种确定给定字符串中有多少字符与另一个字符串不同的算法。您可以定义您接受的答案的接近程度的阈值。
关于python - 比较字符串中的各个字符并接受输入为真,即使拼写不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733407/