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

Python信用评分计算器计算结果错误问题排查求助

信用评分计算器计算错误排查

你的代码逻辑存在条件判断顺序错误,导致高收入、高储蓄的测试用例无法得到正确参数值,最终得分偏低。具体问题和修正方案如下:

问题根源

  1. 收入参数(para1)判断顺序颠倒
    当前代码先判断income >=20000,90000显然满足这个条件,直接将para1设为1,不会执行后续更高阈值的判断。正确逻辑应该从最高阈值开始判断,确保高收入匹配对应的高参数值。

  2. 储蓄参数(para3)判断顺序颠倒
    同理,储蓄20000会先触发>=5000的条件,para3被设为1,无法走到>=20000的分支。

修正后的代码

调整para1和para3的判断顺序,从高阈值到低阈值:

def calculate_score():
    name = entry_name.get()
    highschool_checked = int(highschool.get())
    college_checked = int(college.get())
    university_checked = int(university.get())
    income = int(entry_income.get())
    savings = int(entry_savings.get())
  
    para1 = 0
    # 修正收入判断顺序:从高到低
    if int(income) >= 90000:
        para1 = 3
    elif int(income) >= 60000:
        para1 = 2
    elif int(income) >= 20000:
        para1 = 1

    para2 = 1
    if int(highschool_checked) == 1:
        para2 = 1
    elif int(college_checked) == 1:
        para2 = 2
    elif int(university_checked) == 1:
        para2 = 3

    para3 = 0
    # 修正储蓄判断顺序:从高到低
    if int(savings) >= 20000:
        para3 = 3
    elif int(savings) >= 10000:
        para3 = 2
    elif int(savings) >= 5000:
        para3 = 1

    score = 2*para1 + 3*para2 + para3
    
    if score >= 8:
        result = f"{name}, your credit score is {score}. You are qualified for credit."
    else:
        result = f"{name}, your credit score is {score}. You are not qualified for credit."
    
    label_result = tkinter.Label(text="")
    label_result.configure(text=result)
    label_result.grid(row=6, column=0)

验证结果

修正后,测试用例(收入90000、学历University、储蓄20000)的参数值为:

  • para1=3,para2=3,para3=3
  • 得分:2*3 + 3*3 +3 = 6+9+3=18,与预期一致。

另外,建议使用f-string拼接结果字符串,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:55:31