python - 比较字符串中的各个字符并接受输入为真,即使拼写不准确

标签 python string

我正在学习 Python,我有一个问题。

为了学习,我决定制作一个简单的测验程序,它利用函数、类和其他东西作为练习。

我有一个问题一直困扰着我。测验的格式通常是我从一组问题中随机提出一个问题,并且需要输入答案。如果返回的答案是正确的,我将返回一个 True 值并用它来添加到总积分中。

现在的问题是字符串需要准确,否则即使意图正确,答案也会是错误的。我最初通过在定义问题时在类参数中使用集合来解决这个问题,因此如果答案属于该集合,那么它将是预期的。

这种方法的问题是,我不太清楚一个人怎么会拼错某些东西。例如-如果问题的答案是“lovegood”,即使用户输入“lovegod”或“lovegd”或“lovegooood”或“lovegod”,我也想接受答案,并且我无法解释每一个单个可能的拼写错误。

我决定编写一个特殊的函数,该函数获取输入字符串中的每个字符,并将其与字符串中正确答案的每个字符进行比较,如果大多数字符匹配,那么答案就是正确的。这是我能做的事吗?如果可以,怎么做?有更好的方法吗?

如有任何帮助,我们将不胜感激。

最佳答案

这不是一个很容易优雅解决的问题,因为它有点主观。我们在哪里定义足够接近和不够接近的界限?

例如lovegooddddddddddloveeeeee good 可以接受吗?就像你说的,需要考虑的情况太多了。

一个粗略的解决方案是使用 Levenshtein distance这是一种确定给定字符串中有多少字符与另一个字符串不同的算法。您可以定义您接受的答案的接近程度的阈值。

关于python - 比较字符串中的各个字符并接受输入为真,即使拼写不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733407/

相关文章:

python - 将索引值设置为 date.time pandas 时遇到问题

java - 注释结束或结束语句后拆分字符串

java - 如何获取从 1 开始到 n 结束的 String ?

python - pandas to_datetime 函数问题

python - 使用 Django 的 ModelSerializer 验证选择字段

python - 为什么表达包含 '\' 的正则表达式在没有原始字符串的情况下也能工作。

python - 我如何复制此 try/except 代码中的所有其他输入?

ruby - 如何从 Ruby 中特定索引处的字符串中删除字符

java - 给定一个字符串,找出它是否满足IPv4地址命名规则(代码审查)而不是寻找其他解决方案

python - Python 中使用 Format() 进行动态字符串替换