讨论/意见反馈/反馈|为什么 python 代码只有在 leecode 上编译会出错?/
反馈|为什么 python 代码只有在 leecode 上编译会出错?

leecode上两数相加的问题

image.png

我是python初学者,写了下面代码在leecode上编译不成功,这是为什么
代码如下(在这里乘方运算‘’会打不出来,我在附上一张代码照片吧)
class Solution(object):
def addTwoNumbers(self, l1, l2):
a=0
b=0
for i in range(len(l1)):
a=a+(10
i)*l1[i]
for j in range(len(l2)):
b=b+(10**j)*l2[j]
s=a+b
x=s
for k in range(15):
s=int(s/10)
if s==0:
break
k=k+1
add=[]
for m in range(k):
z=x%10
x=x//10
add.append(z)
return add

l1=[9,9,9,9,9,9,9]
l2=[9,9,9,9]
x=Solution()
x.addTwoNumbers(l1,l2)

代码照片:
image.png

在IDLE上运行无误,但leecode上就会报错
image.png

共 14 个回复

ListNode 是LeetCode自己定义的一个类,代码如下:

class ListNode(object):
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

可见 ListNode 是没有定义 len 这个函数的,所以你调用的时候会出错。

你说你的代码在自己的 IDLE 上运行正常,我猜你的代码应该是这样的(要学会使用代码块,不然你的代码就乱了)

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        a = 0
        b = 0
        for i in range(len(l1)):
            a = a+(10**i)*l1[i]
        for j in range(len(l2)):
            b = b+(10**j)*l2[j]
        print(a,b)
        s = a+b
        x = s
        print(s)
        for k in range(15):
            s = int(s/10)
            if s == 0:
                break
        k = k+1
        add = []
        for m in range(k):
            z = x % 10
            x = x//10
            add.append(z)
        return add

l1 = [9, 9, 9, 9, 9, 9, 9]
l2 = [9, 9, 9, 9]
x = Solution()
x.addTwoNumbers(l1, l2)

这是因为你的输入的l1和l2都是 List 类型的,List是自带len() 函数的,但在LeetCode中运行时,输入的l1和l2都是ListNode类型,所以会报错。

你想自己测试的话,需要这样写:

class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """


original_list1=[1,2,3,4,5]
original_list2=[1,2,3,4,5]
head1=ListNode(None)
head2=ListNode(None)
p1=head1
p2=head2
for i in original_list1:
    head1.next=ListNode(i)
    head1=head1.next
head1=p1.next

for i in original_list2:
    head2.next=ListNode(i)
    head2=head2.next
head2=p2.next

x = Solution()
p=x.addTwoNumbers(head1, head2)

while p:
    print(p.val)
    p=p.next
1

嗯嗯,之前忽略了#的内容,以为都是无用的注释,结果做题前直接把#都删了,现在做出来了😀

我晕,原来如此。
第一次用leecode发帖子,不太会规则,谢谢您😀

谢谢大家,不过我的链表不是很熟悉,就将链表先转化成列表然后进行我的那些繁琐操作,最终将得到的列表转化成链表就对了
leecode最后一个用例竟然给出了一个100位的列表。。。。
另外怎么再leecode上提交多次,多次的运行速度和内存占比都不一样呢
image.png

这个编辑页面格式渲染用的是Markdown语法,有些匹配上的符号表示格式所以就被吃掉啦 ~

1 加粗:

**字体** 表示加粗

2 代码块的表示方式

image.png

效果:

print('fighting!')

也可以点编辑页面上方
image.png

更多说明

「力扣编辑器」使用说明

加油加油

返回的也是链表类喔,要通过建ListNode实现,创建list[]是不行的

嗯呢

谢谢大家,是我把这道题想的太简单了,现在有点明白了。

谢谢您谢谢您,我好像有点明白了

链表没有len函数的呀