You need to enable JavaScript to run this app. Python学生分数统计练习遇TypeError: 'str'不支持项赋值报错
优惠活动
大模型
产品
解决方案
定价
更多

Python学生分数统计练习遇TypeError: 'str'不支持项赋值报错

报错核心原因
  • Python内置的input()函数返回值固定为字符串类型,字符串属于不可变序列,不支持通过变量[索引] = 新值的方式修改元素,这就是触发TypeError: 'str' object does not support item assignment的根本原因。
  • 原有代码默认将input()的返回值当成可修改的列表处理,但实际上函数拿到的初始值是一整段连续的文本字符串,不存在可被修改的列表结构,按索引赋值自然会触发类型错误。
适配原有逻辑的修正写法

你原本的循环遍历思路是没问题的,只需要补充“拆分输入文本为列表”的前置步骤,不要直接对原始输入的字符串做索引赋值即可,修正后代码完全匹配你原来的代码结构:

# 第一步:获取用户输入的原始文本
raw_input = input("Input a list of student scores here ")
# 第二步:按空格拆分原始文本,得到由字符串组成的分数列表
score_str_list = raw_input.split()
# 初始化空列表存放转换后的整数分数
student_scores = []
# 沿用你原本的循环逻辑,把字符串转成整数追加到新列表
for n in range(0, len(score_str_list)):
    student_scores.append(int(score_str_list[n]))
print(student_scores)
# 计算最高分逻辑保持不变
highest_score = max(student_scores)
print(highest_score)
更简洁的等价写法

Python支持用列表推导式简化类型转换的过程,效果和上面的循环写法完全一致,代码更精简:

raw_input = input("Input a list of student scores here ")
student_scores = [int(score) for score in raw_input.split()]
highest_score = max(student_scores)
print(student_scores, highest_score)
运行说明
  • split()方法默认会按任意空白字符(空格、制表符等)拆分输入文本,用户只需要在输入分数时用空格分隔不同分数即可,比如输入78 85 92 69 95
  • 拆分后得到的列表是可变类型,可以正常做元素转换、max()计算等操作,不会再触发字符串赋值的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 15:36:04