Python信用评分计算器计算结果错误问题排查求助
信用评分计算器计算错误排查
你的代码逻辑存在条件判断顺序错误,导致高收入、高储蓄的测试用例无法得到正确参数值,最终得分偏低。具体问题和修正方案如下:
问题根源
收入参数(para1)判断顺序颠倒
当前代码先判断income >=20000,90000显然满足这个条件,直接将para1设为1,不会执行后续更高阈值的判断。正确逻辑应该从最高阈值开始判断,确保高收入匹配对应的高参数值。储蓄参数(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
相关产品推荐
相关产品推荐

