python中的链表函数出错

2024-06-09 22:53:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须将一个数字转换成链表,这样每个数字都在一个节点中,并且指向下一个节点数字函数应该返回链表的头。e、 g input 120应创建节点1->;2->;0的列表并返回参考。如果它是一个负数,比如说-120,它应该返回-1->;-2->;0。我试着这样做:

def number_to_list(number):
    head,tail = None,None
    for x in str(number):
        if x<0:
           x = -int(x)
           node = Node(int(x))
        else:
           node = Node(int(x))
        if head:
           tail.next = node
        else:
            head = node
        tail = node
    return head
    pass

对于正数,它工作正常,但如果我通过-120,则显示错误:

ValueError: invalid literal for int() with base 10: '-'. 

我怎样才能修好它。你知道吗


Tags: gtnonenodenumberforif节点数字
3条回答

在第一次使用负数的迭代中,您实际执行:

int('-')

str(-120)返回“-”、“1”、“2”、“0”

试试这个:

    needMinus = number < 0
    for x in str(abs(number)):
        if needMinus:
            x = -int(x)
            needMinus = False
            node = Node(int(x))
        else:
            node = Node(int(x))
        if head:
            tail.next = node

        else:
            head = node
        tail = node

问题是你在一个字符串上迭代

for x in string(number):

使x成为一个字符,它在字符串编号上进行迭代。现在,当你有一个正数时,数字中的每一个数字都可以转换成一个整数。但是当你传递一个负数时,x的值是“-”,不能转换成整数。这就是错误。依我所见,我认为你是在存储列表中数字的绝对值。这可以通过检查字符是否为“-”来完成,在这里您可以给一个pass在这个迭代中什么都不做。你知道吗

if x=='-':
    continue

相关问题 更多 >