Python读取输入文件做数值运算报TypeError的正确解决方法
问题根因
代码存在两处核心错误:
- 总人数
t的读取逻辑错误:map(int, inputfile.readline().split())返回的是map类型的可迭代对象,不是单个整数。第一行读取r、s时,是通过两个变量自动解包了map返回的内容才拿到整数值;第二行只有一个整数输入,没有做解包/取值操作,导致t是map类型,无法和整数类型的seats_available做大小比较,直接触发你看到的类型报错。 - 输出写入逻辑错误:
sit和stand都是整数类型,无法直接和字符串做拼接运算,且两个输出值之间需要加空格分隔,否则不符合题目要求的输出格式,运行时还会触发类型错误。
修正后可运行代码
inputfile = open("sitin.txt", "r") outputfile = open("sitout.txt", "w") # 读取行列数 r, s = map(int, inputfile.readline().split()) # 读取总人数 t = int(inputfile.readline().strip()) seats_available = r * s if t > seats_available: sit = seats_available stand = t - seats_available else: sit = t stand = 0 # 格式化结果写入输出文件 outputfile.write(f"{sit} {stand}\n") outputfile.close() inputfile.close()
关键修正说明
- 读取
t时直接用int()转换整行输入内容,确保拿到整数类型值,支持后续的大小比较、减法等数值运算。如果习惯沿用map写法,也可以写成t, = map(int, inputfile.readline().split()),通过末尾的逗号自动解包map返回的单元素迭代器,效果完全一致。 - 写入输出时通过f-string把整数转成字符串格式,两个结果中间加空格分隔,既符合题目输出要求,也不会触发类型拼接错误。
内容的提问来源于stack exchange,提问作者Akkirotru
相关产品推荐
相关产品推荐

