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

使用递归函数判断成绩是否合格 现有代码如何精简优化

代码可优化点说明

你当前的实现逻辑思路正确,但存在以下可优化的问题:

  • 语法错误:原代码缩进不规范,不符合Python语法要求,直接运行会报错
  • 安全风险:直接用eval()解析用户输入,若传入恶意代码会被直接执行,存在较高安全风险
  • 逻辑冗余:不需要额外的f参数统计合格成绩数量,只要遍历到任意小于40的成绩就可以直接判定为不及格,无需继续遍历剩余内容
  • 退出逻辑粗暴:直接调用quit()强制结束程序,灵活度低,递归函数可仅返回布尔判定结果,由外层统一处理输出
  • 递归逻辑不清晰:终止条件拆分过于零散,可读性较差

优化后的递归实现

import ast
# 用ast.literal_eval替代eval,仅解析字面量数据,避免恶意代码执行风险
score_list = ast.literal_eval(input())

def check_pass(index):
    # 递归终止条件1:已遍历完所有成绩,无<40的项,判定为及格
    if index == len(score_list):
        return True
    # 递归终止条件2:遇到<40的成绩,直接判定为不及格,终止递归
    if score_list[index] < 40:
        return False
    # 递归检查下一个成绩
    return check_pass(index + 1)

# 输出中文结果,需英文的话可替换为 Pass/Fail
print("及格" if check_pass(0) else "不及格")

非递归极简实现(供参考)

如果不需要练习递归语法,用Python内置函数一行即可实现相同功能,性能比递归更优:

import ast
print("及格" if all(score >= 40 for score in ast.literal_eval(input())) else "不及格")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:27:00