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

Python使用sys.stdout.write输出数组元素值及长度时出现TypeError问题

Python sys.stdout.write 报错问题解答

错误产生原因

你的代码存在两处核心问题:

  1. 迭代逻辑错误:for w in countries 遍历得到的w已经是列表中的字符串元素(比如第一次循环的w就是"Madagascar"),不能直接把字符串作为下标去取countries[w],列表只接受整数/切片作为索引,这就是报错TypeError: list indices must be integers or slices, not str的直接诱因。
  2. 参数类型不匹配:sys.stdout.write只接收字符串类型的输入,len()返回的是整数,不能直接和字符串做拼接运算。同时print语句默认会在输出末尾添加换行符,sys.stdout.write不会主动添加,需要手动补全才能和原print效果一致。

修正后可运行代码

import sys
countries = ["Madagascar", "Russia", "Antarctica", "Tibet", "Mongolia"]
for w in countries:
    sys.stdout.write(f"{w} {len(w)}\n")
# 也可以用字符串拼接的写法:sys.stdout.write(w + " " + str(len(w)) + "\n")

关键修改点

  • 直接使用迭代变量w取值,无需重复通过列表索引访问
  • 将长度计算结果转为字符串类型,匹配write方法的参数要求
  • 末尾添加\n换行符,和原print语句的输出格式保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:45:00