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

Python读取文件至列表后按输入行号切换布尔值运行出错求助

问题核心错误点
  • input()返回值为字符串类型,你既没有将其转换为对应行号的整数,也没有将遍历的下标和用户输入的行号做匹配,反而直接和布尔值True做相等判断,这个判断条件永远为假,写文件逻辑从未触发,这是输出文件空白的直接原因
  • 从文件读取的每一行是带换行符的字符串格式,不是原生布尔值,不能直接做取反操作,需要先做类型转换
  • fp.write()仅支持传入字符串参数,你直接传入列表list1会触发类型报错,且写操作的位置错误,不应该放在if判断内部
  • 取反逻辑错误,你没有对原值做判断直接赋值为False,不符合True转False、False转True的需求
修正后代码
# 读取文件内容,转换为布尔值列表
bool_list = []
with open("myfile.dat", 'r') as fp:
    for line in fp.readlines():
        # 去掉换行符后转成布尔值
        line_content = line.strip()
        bool_list.append(line_content == 'True')

# 获取用户输入的行号,默认用户输入从1开始计数
hire_out = int(input("Enter Pos Number"))
# 转成0开头的下标
target_idx = hire_out - 1

# 校验行号合法性
if 0 <= target_idx < len(bool_list):
    # 对应行布尔值取反
    bool_list[target_idx] = not bool_list[target_idx]
else:
    print("输入的行号不合法")

# 写入回文件
with open("myfile.dat", 'w') as fp:
    for value in bool_list:
        # 布尔值转字符串加换行符写入
        fp.write(f"{value}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:02