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

Python 3.11中Linked List的__str__方法报错问题求助

问题解决:链表__str__方法报错修复

核心问题分析

Python中__str__方法的强制要求是必须返回字符串类型,你的原实现和两次修改都违反了这个规则:

  • 原方法无return语句,默认返回None,触发TypeError;
  • 修改1返回循环结束后的node(此时为None),仍非字符串;
  • 修改2循环结束后node已变为None,访问node.data触发AttributeError。

正确的__str__实现

遍历链表收集所有节点数据,拼接成可读性强的字符串返回:

def __str__(self):
    nodes = []
    current = self.head
    while current:
        # 把数据转成字符串,兼容非字符串类型的节点数据
        nodes.append(str(current.data))
        current = current.next
    # 用箭头连接节点,清晰展示链表结构
    return " -> ".join(nodes)

测试时执行print(a_list),会输出类似Tuesday -> Wednesday的结果,符合预期。

额外代码优化提示(非核心问题,但影响功能正确性)

  1. search方法:原代码while current.next会漏掉最后一个节点,应改为while current:
def search(self, target):
    current = self.head
    while current:  # 修改此处
        if current.data == target:
            return True
        current = current.next
    return False
  1. remove方法:原代码判断头节点时逻辑错误(比较节点对象和目标数据),且找到目标后未终止循环:
def remove(self, target):
    # 修正头节点判断逻辑
    if self.head and self.head.data == target:
        self.head = self.head.next
        return
    current = self.head
    previous = None
    while current:
        if current.data == target:
            previous.next = current.next
            return  # 找到后立即终止循环
        previous = current
        current = current.next

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:37:44