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
相关产品推荐
相关产品推荐

