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

Python成绩转换程序调试求助:int() base10无效字面量错误

问题解决:处理数组形式成绩输入并生成等级数组

错误原因分析

  1. 输入逻辑不匹配:原代码设计为逐个输入单个成绩,不符合你需要的数组形式输入(如[89.79,55,12])的需求。
  2. 类型转换错误:尝试用int()解析带小数的字符串(如"89.79")会触发invalid literal for int() with base 10错误,因为整数类型无法处理小数点。
  3. 语法错误:变量定义行totals = []letters = []未分隔、注释Get and store user input未加#、循环和条件语句缩进不正确。
  4. 等级规则不符:原代码包含需求外的C等级,需要调整匹配你要的[HD,D,P,F]体系。

修复后的代码

import ast

# 初始化存储成绩和等级的列表
totals = []
letters = []

# 获取并解析数组形式的用户输入
print("请输入数组形式的成绩,例如 [89.79,55,12]")
user_input = input("> ")

# 安全解析输入的数组字符串为Python列表
try:
    totals = ast.literal_eval(user_input)
except SyntaxError:
    print("输入格式错误,请按照要求输入数组形式的成绩")
    exit()

# 为每个成绩计算对应的等级
for total in totals:
    # 将成绩转换为浮点数,兼容整数和小数
    score = float(total)
    if score >= 90:
        letters.append("HD")
    elif score >= 80:
        letters.append("D")
    elif score >= 70:
        letters.append("P")
    else:
        letters.append("F")

# 输出结果
print("学生的GPA等级为: {}".format(letters))

关键修改说明

  • 数组输入解析:使用ast.literal_eval()安全将用户输入的数组字符串转换为Python列表,避免直接使用eval()带来的安全风险。
  • 类型转换优化:用float()处理成绩,同时支持整数和小数输入,解决原代码的类型转换错误。
  • 语法错误修复:分隔变量定义、添加注释符号、修正所有缩进问题,保证代码可正常运行。
  • 等级规则调整:移除原代码中的C等级,调整条件匹配你需要的HD/D/P/F体系(可根据实际需求修改分数阈值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49