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

Python使用含小数的range报错,如何处理CVSS分数输入需求?

问题分析与解决

原代码存在两个核心问题:

  • 用int(input("Enter an CVSS Score: "))转换输入:如果输入小数(比如1.2),会直接触发ValueError,因为int()无法解析带小数点的字符串。
  • 使用range(0.1, 3.9)判断范围:range()仅支持整数参数,不能用来判断小数是否在某个区间内。

针对你的需求(仅允许输入1-10的数值,支持小数,匹配CVSS风险等级),修正后的代码如下:

while True:
    try:
        score = float(input("Enter a CVSS Score: "))
        # 验证输入范围在1-10之间
        if not (1.0 <= score <= 10.0):
            print("请输入1到10之间的数值")
            continue
        # 匹配CVSS风险等级
        if score < 0.1:
            print("Risk Score = None")
        elif 0.1 <= score <= 3.9:
            print("Risk Score = Low")
        elif 4.0 <= score <= 6.9:
            print("Risk Score = Medium")
        elif 7.0 <= score <= 8.9:
            print("Risk Score = High")
        elif 9.0 <= score <= 10.0:
            print("Risk Score = Critical")
        break
    except ValueError:
        print("请输入有效的数值(支持小数,比如1.2、3.4)")

代码说明

  • 用float()替代int()转换输入,支持小数解析。
  • 用循环+异常处理拦截非数字输入,确保用户输入有效。
  • 直接用区间比较判断分数等级,替代无效的range()调用。
  • 增加1-10的输入范围校验,不符合要求时提示用户重新输入。
  • 补充完整的CVSS风险等级划分,符合行业标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:47:07