Jupyter中出现TypeError:'str'对象不支持元素赋值的问题求助
解决Python作业中的TypeError及字符串处理问题
错误根源
TypeError: 'str' object does not support item assignment 是因为Python字符串是不可变类型——你没法直接修改字符串里的某个字符(比如写my_str[2] = 'Z'这种代码肯定报错)。另外Python压根没有内置的StringBuilder类,咱们通常用列表来模拟它的功能,因为列表追加操作的效率比反复拼接字符串高得多。
满足作业要求的完整代码
下面是符合你所有要求的实现,每一步都有注释:
1. 读取本地文本文件
用with语句是最稳妥的方式,它会自动帮你关闭文件,不用手动处理:
# 替换成你的本地文件实际路径 file_path = "test.txt" with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 把文件所有行读进一个列表里
2. 自定义反转每行字符串 + 模拟StringBuilder存储
# 用列表模拟StringBuilder,存反转后的内容 reversed_lines = [] for line in lines: # 先去掉每行末尾的换行符,避免反转后换行跑到开头 raw_line = line.rstrip('\n') reversed_line = "" # 自己写循环反转:从最后一个字符往第一个字符遍历 for idx in range(len(raw_line)-1, -1, -1): reversed_line += raw_line[idx] # 加回换行符,再放进列表 reversed_lines.append(reversed_line + '\n') # 输出反转后的全部内容 print("反转后的文本:") print(''.join(reversed_lines))
3. 逐字符转大写处理
# 还是用列表当临时存储,模拟StringBuilder upper_lines = [] for line in lines: upper_line = "" # 逐个字符转大写 for char in line: upper_line += char.upper() upper_lines.append(upper_line) # 输出转大写后的内容 print("\n转大写后的文本:") print(''.join(upper_lines))
重要注意点
- 别直接修改字符串:所有字符操作都通过新建字符串或者列表拼接来做,绝对不要尝试给字符串的某个索引位置赋值。
- 列表模拟StringBuilder:用列表存中间结果,最后用
''.join()拼接成最终字符串,这在处理大文件时速度会快很多,避免频繁生成新字符串对象。 - 自定义反转逻辑:完全靠循环从后往前取字符实现反转,没有用Python内置的
[::-1]或者reversed()方法,符合作业要求。
内容的提问来源于stack exchange,提问作者Mayrel Briones
相关产品推荐
相关产品推荐

