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

Python字母成绩转数值函数咨询:需正确返回对应成绩数值

字母成绩转数值代码优化方案

原代码实现

字母成绩对应数值

A = 95
B = 85
C = 75
D = 65
E = 55
F = 0

获取用户输入成绩

grade = input('Enter your grade: ')
grade = str(grade)

返回成绩数值的函数(整型)

def grade_value(user_grade):
    if user_grade == 'A':
        return A
    elif user_grade == 'B':
        return B
    elif user_grade == 'C':
        return C
    elif user_grade == 'D':
        return D
    elif user_grade == 'E':
        return E
    elif user_grade == 'F':
        return F
    else:
        return('Error: Invalid grade')

调用函数并打印结果

value = grade_value(grade)
if isinstance(value, int):
    print(f"The value of {grade} is {value}")
else:
    print(value)

确保代码正确返回数值的改进措施

1. 标准化输入格式,兼容大小写和冗余空格

原代码仅匹配大写字母,用户输入小写a或带空格的 A都会触发错误,先对输入做清洗处理:

grade = input('Enter your grade: ').strip().upper()
# input本身返回字符串,无需额外转str;strip()去前后空格,upper()统一转为大写

2. 用字典替代全局变量,避免命名冲突且更易维护

全局变量容易引发意外修改,用字典映射成绩与数值更安全,还能大幅简化函数逻辑:

# 替换原来的单个变量定义
GRADE_MAP = {
    'A': 95,
    'B': 85,
    'C': 75,
    'D': 65,
    'E': 55,
    'F': 0
}

def grade_value(user_grade):
    return GRADE_MAP.get(user_grade, 'Error: Invalid grade')

后续修改成绩对应值时,只需调整字典内容,无需修改函数内的if-elif分支。

3. 统一错误处理逻辑,避免返回类型混乱

原函数正常返回整数、错误返回字符串,虽调用时做了类型判断,但用异常处理更符合Python规范:

def grade_value(user_grade):
    try:
        return GRADE_MAP[user_grade]
    except KeyError:
        raise ValueError('Error: Invalid grade')

# 调用时捕获异常
try:
    value = grade_value(grade)
    print(f"The value of {grade} is {value}")
except ValueError as e:
    print(e)

4. 增加输入合法性预检查

在调用函数前先过滤明显无效的输入,比如非单字母内容:

grade = input('Enter your grade: ').strip().upper()
if not grade.isalpha() or len(grade) != 1:
    print('Error: Please enter a single letter grade (A-F)')
else:
    try:
        value = grade_value(grade)
        print(f"The value of {grade} is {value}")
    except ValueError as e:
        print(e)

5. 覆盖性测试验证

手动测试以下场景,确保所有情况都能正确处理:

  • 输入大写字母A-F
  • 输入小写字母a-f
  • 输入带空格的 B
  • 输入无效字符如G、1、AB
  • 输入空值(直接回车)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:12:25