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

运行Python成绩单生成代码时触发ValueError错误,求助排查

问题分析与解决方案

错误原因

  • 触发ValueError: invalid literal for int() with base 10: 'k'的直接原因:你错误地用int()去转换姓名和学校名称的输入内容。这两个字段是字符串类型(比如名字里的字母、汉字),无法被int()函数解析为整数,当输入包含非数字字符(比如'k')时就会报错。
  • int()函数仅能转换符合十进制整数格式的字符串,遇到字母、符号等非数字内容时,必然抛出该错误。

代码修正点

  1. 修正输入类型转换:姓名和学校名称不需要转换,直接保留字符串类型即可。
  2. 修复成绩等级判断逻辑:原代码用多个独立if,会导致高分数的等级被后续低条件覆盖(比如90分最终会被设为C2),需改用elif链式判断,确保只匹配第一个符合条件的等级。

修正后的完整代码

# 生成带总分和百分比的成绩单

# 学生基本信息
r = int(input('Enter Roll No. :'))
n = input('Enter Name:')  # 去掉int()转换
s = input('Enter School name :')  # 去掉int()转换

# 科目成绩
eng = float(input('Enter your English marks :'))
math = float(input('Enter your Mathematics marks :'))
social = float(input('Enter your Social marks :'))
science = float(input('Enter your Science marks :'))
malayalam = float(input('Enter your Malayalam marks :'))
hindi = float(input('Enter your Hindi marks :'))

# 计算总分和百分比
total = eng + math + social + science + malayalam + hindi
percentage = (total * 100) / 480  # 确认每科满分是80,6科总分480,若满分不同请修改分母

# 判定等级
if percentage >= 80:
    grade = 'A1'
elif percentage >= 70:
    grade = 'A2'
elif percentage >= 60:
    grade = 'B1'
elif percentage >= 50:
    grade = 'B2'
elif percentage >= 40:
    grade = 'C1'
elif percentage >= 33:
    grade = 'C2'
else:
    grade = 'E'

# 输出成绩单
print('Roll Number :', r)
print('Name :', n)
print('School Name:', s)
print('Total:', total)
print('Percentage :', percentage)
print('Final Grade:', grade)

额外说明

  • 若科目满分不是80,请自行调整百分比计算中的分母(比如每科100分的话,分母改为600)。
  • 原代码中变量t和p改为total和percentage是为了提升可读性,不影响功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:02:43