You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Difflib.SequenceMatcher在IF语句中未执行?技术求助

问题原因及解决办法

核心问题

SequenceMatcher.ratio()方法的返回值是0到1之间的浮点数,用来表示两个字符串的匹配相似度(1代表完全匹配,0代表完全不匹配),并非百分比数值。你的代码里把判断条件写成了>=60,但实际计算出的比值约为0.857,远小于60,导致IF语句的条件永远不成立,内部的打印语句自然不会执行。

验证实际比值

运行你的代码时,外部打印的结果应该类似:

It returns a ratio 0.8571428571428571

这个数值才是正确的匹配比值,而非60这类百分比。

修正代码

你可以选择两种方式修正:

  • 直接使用0-1范围的数值作为判断条件:
from difflib import SequenceMatcher

string_one = 'He is right'
string_two = 'He was right'

match_ratio = SequenceMatcher(a=string_one,b=string_two).ratio()
print("It returns a ratio", match_ratio)
if match_ratio >= 0.6:
    print("It does return a ratio", match_ratio)
  • 把比值乘以100转成百分比后再判断:
from difflib import SequenceMatcher

string_one = 'He is right'
string_two = 'He was right'

match_ratio = SequenceMatcher(a=string_one,b=string_two).ratio() * 100
print("It returns a ratio (percent)", match_ratio)
if match_ratio >= 60:
    print("It does return a ratio (percent)", match_ratio)

另外建议把计算出的比值存到变量里,避免重复创建SequenceMatcher实例,提升代码效率。

内容的提问来源于stack exchange,提问作者Abdulrahman Hocaoglu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:48:10