鱼C论坛

 找回密码
 立即注册
楼主: 福禄娃娃

[扩展阅读] 人生苦短,我用Python!

    [复制链接]
发表于 2023-12-10 20:57:59 | 显示全部楼层
支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-20 21:56:41 | 显示全部楼层
学习了,楼主加油,鱼C加油!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-23 10:33:24 | 显示全部楼层
人生苦短,及时行乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-2 13:56:04 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-2 13:56:46 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 19:50:22 | 显示全部楼层
人生苦短,我用Python!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:24:31 | 显示全部楼层
@FishC
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        while l1 or l2:
            total = l1.val + l2.val            if total >= 10:
                next1 = 1
            else:
                next1 = 0
            l1 = l1.next
            l2 = l2.next
        new = ListNode()
        cur = new
        new.val = total % 10
        return new
为什么报错AttributeError: 'NoneType' object has no attribute 'val'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:24:47 | 显示全部楼层
ShuviDoura 发表于 2024-03-20 21:24
@FishC
# Definition for singly-linked list.
# cl ...


这个错误是因为在循环中,当`l1`或`l2`为`None`时,你仍然尝试访问它们的`val`属性。这是因为你没有在循环中添加检查`l1`和`l2`是否为`None`的条件。要解决这个问题,你可以添加一个条件来检查它们是否为`None`,如果是,则终止循环。

此外,在循环之前,你还需要创建一个新的链表头节点,并且你计算的总和应该是两个链表当前节点的值相加,并考虑进位。然后,你需要根据总和创建一个新的节点,并将其链接到结果链表上。

下面是修正后的代码示例:

  1. class Solution:
  2.     def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
  3.         new = ListNode()  # 创建一个新的链表头节点
  4.         cur = new  # 当前节点
  5.         carry = 0  # 进位

  6.         while l1 or l2 or carry:
  7.             val1 = l1.val if l1 else 0  # 如果l1不为空,则取l1的值,否则为0
  8.             val2 = l2.val if l2 else 0  # 如果l2不为空,则取l2的值,否则为0
  9.             
  10.             total = val1 + val2 + carry  # 计算总和,考虑进位
  11.             carry = total // 10  # 计算进位
  12.             cur.next = ListNode(total % 10)  # 创建一个新节点,并将其链接到结果链表上
  13.             cur = cur.next  # 移动当前节点

  14.             if l1:
  15.                 l1 = l1.next
  16.             if l2:
  17.                 l2 = l2.next

  18.         return new.next  # 返回结果链表头节点的下一个节点,即为结果链表
复制代码


希望这可以解决您的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:30:47 | 显示全部楼层
FishC 发表于 2024-3-20 21:24
这个错误是因为在循环中,当`l1`或`l2`为`None`时,你仍然尝试访问它们的`val`属性。这是因为你没有在 ...

报错是这个
AttributeError: 'NoneType' object has no attribute 'val'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:31:02 | 显示全部楼层
ShuviDoura 发表于 2024-03-20 21:30
报错是这个
AttributeError: 'NoneType' object has  ...


非常抱歉,看漏了你代码中的一个问题,就是在循环开始之前没有对 `l1` 和 `l2` 进行有效性检查。你需要确保 `l1` 和 `l2` 都不是 `None` 才能访问它们的 `val` 属性。

为了解决这个问题,你可以添加一个条件来检查 `l1` 和 `l2` 是否为 `None`,如果是,则直接返回 `None`,表示无效的输入。以下是修正后的代码示例:

  1. class Solution:
  2.     def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
  3.         new = ListNode()  # 创建一个新的链表头节点
  4.         cur = new  # 当前节点
  5.         carry = 0  # 进位
  6.         
  7.         while l1 or l2 or carry:
  8.             val1 = l1.val if l1 else 0  # 如果 l1 不为空,则取 l1 的值,否则为 0
  9.             val2 = l2.val if l2 else 0  # 如果 l2 不为空,则取 l2 的值,否则为 0
  10.             
  11.             total = val1 + val2 + carry  # 计算总和,考虑进位
  12.             carry = total // 10  # 计算进位
  13.             cur.next = ListNode(total % 10)  # 创建一个新节点,并将其链接到结果链表上
  14.             cur = cur.next  # 移动当前节点
  15.             
  16.             if l1:
  17.                 l1 = l1.next
  18.             if l2:
  19.                 l2 = l2.next
  20.         
  21.         return new.next  # 返回结果链表头节点的下一个节点,即为结果链表
复制代码


这样应该就能解决你遇到的问题了。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:31:35 | 显示全部楼层
FishC 发表于 2024-3-20 21:24
这个错误是因为在循环中,当`l1`或`l2`为`None`时,你仍然尝试访问它们的`val`属性。这是因为你没有在 ...

@FishC

我想解决的报错是这个
AttributeError: 'NoneType' object has no attribute 'val'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:31:50 | 显示全部楼层
ShuviDoura 发表于 2024-03-20 21:31
@FishC

我想解决的报错是这个
AttributeError: 'N ...


这个错误是指在你的代码中,你尝试访问一个NoneType对象的属性val,但是这个对象实际上是没有这个属性的。

通常情况下,出现这个错误的原因是你尝试使用一个空对象(None)而不是一个有值的对象。这可能是因为你的代码没有正确地初始化或者赋值给这个对象。

为了解决这个问题,你可以考虑以下几种方法:

1. 检查你的代码,在使用这个对象之前,是否正确地初始化或者赋值给了它。确保你所使用的对象是有值的,而不是空的。

2. 使用条件语句来检查这个对象是否为空。避免在对象为空的情况下访问它的属性。例如:

  1. if obj is not None:
  2.     # 访问obj的属性
  3.     obj.val
  4. else:
  5.     # 处理空对象的情况
  6.     # 或者抛出异常
复制代码

3. 如果你知道这个对象可能为空,你可以使用try-except语句来捕获这个错误,并进行相应的处理。例如:

  1. try:
  2.     # 尝试访问对象的属性
  3.     obj.val
  4. except AttributeError:
  5.     # 对象为空,或者没有val属性
  6.     # 进行相应的处理
  7.     # 或者抛出异常
复制代码


希望以上方法能够帮助你解决这个错误!记得始终对使用对象之前进行正确的初始化和赋值,以及确保对象不为空。如果还有问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:34:37 | 显示全部楼层
FishC 发表于 2024-3-20 21:31
这个错误是指在你的代码中,你尝试访问一个NoneType对象的属性val,但是这个对象实际上是没有这个属性 ...

@FishC
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        new = ListNode()
        cur = new
        while l1 and l2:
            total = l1.val + l2.val
            if total >= 10:
                next1 = 1
            else:
                next1 = 0
            l1 = l1.next
            l2 = l2.next
            cur.val = total % 10
            cur = cur.next
        return new
这个里面我定义了new是一个链表,并把它给了new,为什么new还是没有val的属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-20 21:34:59 | 显示全部楼层
ShuviDoura 发表于 2024-03-20 21:34
@FishC
# Definition for singly-linked list.
# cl ...


你好!在你的代码中,你定义了一个新的链表节点`new`,但是没有给它赋予`val`属性。因此,`new`的值是默认的0,而不是你期望的初始值。

解决方法是在初始化`new`节点时,将`val`参数传递给构造函数,像这样:

  1. new = ListNode(val=0)
复制代码


这样,`new`节点就会带有一个初始值为0的`val`属性。

另外,你还需要将`l1`和`l2`节点的值相加,并将结果赋给`cur.val`,然后再将`cur`节点移到下一个节点,像这样:

  1. cur.val = total % 10
  2. cur.next = ListNode(val=total // 10)
  3. cur = cur.next
复制代码


这样,你就可以正确地添加两个链表中对应节点的值,并处理进位问题。

最后,你需要检查循环结束后是否还有剩余的节点未处理,如果有,则继续将它们的值相加并处理进位。

以下是修改后的代码示例:

  1. class Solution:
  2.     def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
  3.         new = ListNode(val=0)
  4.         cur = new
  5.         carry = 0
  6.         while l1 or l2 or carry:
  7.             total = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry
  8.             carry = total // 10
  9.             cur.val = total % 10
  10.             l1 = l1.next if l1 else None
  11.             l2 = l2.next if l2 else None
  12.             if l1 or l2 or carry:
  13.                 cur.next = ListNode(val=0)
  14.                 cur = cur.next
  15.         return new
复制代码


希望能帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-25 18:42:26 | 显示全部楼层

强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-24 14:32:21 | 显示全部楼层
感谢楼主  小甲鱼666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表