我对此非常陌生并且必须为项目执行此操作,因此请牢记这一点。
我需要编写一个函数class StoreSpider (CrawlSpider):
name = "storyder"
allowed_domains = ["example.com"]
start_urls = ["http://www.example.com/"]
#start_urls = ["http://www.example.com/books.php", "http://www.example.com/movies.php"]
rules = (
Rule(LinkExtractor(), follow=True, callback='parse_category'),
Rule(LinkExtractor(), follow=False, callback="parse_item"),
)
def parse_category(self, response):
category = StoreCategory()
# some code for determining whether the current page is a category, or just another stuff
if is a category:
category['name'] = name
category['url'] = response.url
return category
def parse_item(self, response):
item = StoreItem()
# some code for extracting the item's data
return item
,它有一个list类型的参数。
该列表是一个4x4二维整数数组(4行和4列整数)。
该函数必须返回从右上角到左下角的对角线位置的整数之和。
我没有尝试任何东西,因为我不知道从哪里开始,所以会很感激一些指导。
答案 0 :(得分:2)
由于您还没有指定语言(这可能是课堂作业),我必须提供伪代码。给定4x4 2d数组,基本思想是使用指定索引的循环,并使用该索引在两个维度中获取正确的元素。假设我们有阵列:
[][0] [][1] [][2] [][3]
----- ----- ----- -----
[0][] 1 2 3 4
[1][] 5 6 7 8
[2][] 9 10 11 12
[3][] 13 14 15 16
我们希望将左上角到右下角(1+6+11+16
)(1)相加。那将是这样的:
def sumOfDiagonal (arr, sz):
sum = 0
for i = 0 to sz - 1 inclusive:
sum = sum + arr[i][i]
return sum
使用正常的方式访问数组。如果问题中的含糊不清,你的数组实际一些描述的列表(例如16个元素的链表),你只需要调整你的方式得到"数组"元件。
例如,16个元素的列表需要获取节点0,5,10和15,这样您就可以在每次累积后跳过四个节点的列表。
举例来说,这里有一些Python代码(2)用于执行左上角到右下角的变体,它按预期输出34 (1+6+11+16)
:
def sumOfDiagonals(arr):
sum = 0
for i in range(len(arr)):
sum += arr[i][i]
return sum
print(sumOfDiagonals([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]))
(1)要做到右上角到左下角,只需要将第二个术语更改为sz - i - 1
。
(2)当您希望能够测试伪代码时,Python是理想的伪代码语言,只要您远离其更复杂的角落: - )