python - AttributeError: 'int' 对象没有属性 'val' num = my_list.val + new_sum
问题描述
我正在尝试学习python,但遇到了一些麻烦。我需要使用两个链表并用它们的总和创建一个新的链表,我可以假设这两个数字不包含任何前导零,除了数字 0 本身,但我得到了错误
AttributeError: 'int' object has no attribute 'val'
num = my_list.val + new_sum
Line 80 in addTwoNumbers (Solution.py)
ret = Solution().addTwoNumbers(param_1, param_2)
Line 121 in _driver (Solution.py)
_driver()
Line 132 in <module> (Solution.py)
我不明白如果我像我一样初始化它,为什么 my_list 会是一个 int 而没有一个 val 。这是生成错误的代码:
# 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]:
my_list = ListNode(0)
my_list.next = 0
ptr = my_list
def countSize(lst: Optional[ListNode]) -> int:
r = 0
while lst:
r += 1
lst = lst.next
return r
num1 = countSize(l1)
num2 = countSize(l2)
if num1 > num2:
i = 0
while l1:
if i > num2:
new_sum = l1.val
num = my_list.val + new_sum
if num > 9:
my_list.val = my_list.val + new_sum - 10
my_list.next.val = 1
my_list = my_list.next
l1 = l1.next
i += 1
continue
else:
my_list.val = my_list.val + new_sum
my_list.next = 0
my_list = my_list.next
l1 = l1.next
i += 1
continue
else:
new_sum = l1.val + l2.val
num = my_list.val + new_sum
if num > 9:
my_list.val = my_list.val + new_sum - 10
my_list.next.val = 1
my_list = my_list.next
l1 = l1.next
l2 = l2.next
i += 1
continue
else:
my_list.val = my_list.val + new_sum
my_list.next = 0
my_list = my_list.next
l1 = l1.next
l2 = l2.next
i += 1
continue
else:
i = 0
while l2:
if i > num1:
new_sum = l2.val
num = my_list.val + new_sum
if num > 9:
my_list.val = my_list.val + new_sum - 10
my_list.next.val = 1
my_list = my_list.next
l2 = l2.next
i += 1
continue
else:
my_list.val = my_list.val + new_sum
my_list.next = 0
my_list = my_list.next
l2 = l2.next
i += 1
continue
else:
new_sum = l1.val + l2.val
num = my_list.val + new_sum
if num > 9:
my_list.val = my_list.val + new_sum - 10
my_list.next.val = 1
my_list = my_list.next
l1 = l1.next
l2 = l2.next
i += 1
continue
else:
my_list.val = my_list.val + new_sum
my_list.next = 0
my_list = my_list.next
l1 = l1.next
l2 = l2.next
i += 1
continue
return ptr
解决方案
有很多这样的行:my_list = my_list.next
.
像这样的行第一次运行时,my_list
会变成 an int
,下次你点击时,my_list.val
你会得到错误。
推荐阅读
- mysql - Mysql:GROUP BY 自定义日期间隔
- android - Proguard 问题:“java.lang.IllegalArgumentException:非法查询表达式:在查询中找不到哈希键条件”
- jquery - 如何在 mvc 中使用 jquery 从数据库中获取复选框值
- javascript - 将函数参数传递给 NoeJs 中的回调主体
- csv - 当分隔符在 JasperReports 中的字符串中时,如何抑制字符串引号?
- javascript - React Native 多次调用 setState 使应用程序崩溃
- php - 将数组元素删除到特定数量
- javascript - 所有幻灯片完成后如何停止循环?
- javascript - 将文件转换为 url 中的可下载文件 - javascript
- postman - 如果我不在请求之间设置延迟,纽曼请求将失败