希赛考试网
首页 > 软考 > 软件设计师

python基础语法第11关作业

希赛网 2024-01-18 11:01:52

Python是一种易于上手的编程语言,受到越来越多的人的喜爱。在学习Python的过程中,第11关作业是一个重要的里程碑。这篇文章将从多个角度对Python基础语法第11关作业进行分析,让大家更好地理解Python编程的核心概念。

一、题目分析

第11关作业的题目为“实现一个函数find_poisoned_duration(s, d),给定一个表示攻击持续时间的非负整数序列,以及另一个非负整数duration代表每次攻击的持续时间,返回这个攻击的所有持续时间的总和。”。此题要求我们实现一个名为find_poisoned_duration的函数,通过传入两个参数s和d,计算出总的攻击持续时间。其中,s表示攻击持续时间的非负整数序列,d代表每次攻击的持续时间。

二、核心思路

要理解这个题目,我们需要首先了解Python中函数的定义和调用方法。在Python中,我们可以通过def关键字来定义一个函数,例如:

```

def add_numbers(x, y):

return x + y

```

这个函数名为add_numbers,通过传入两个参数x和y,返回它们的和。这个函数可以通过下面的方式进行调用:

```

result = add_numbers(1, 2)

print(result) # 输出 3

```

在这个作业中,我们需要自己编写find_poisoned_duration函数,并通过传入不同的参数进行测试。具体来说,我们需要实现以下几个步骤:

1. 初始化变量total_duration为0,表示总攻击持续时间为0。

2. 遍历参数s中的每个元素,表示每次攻击的持续时间。

3. 将每次攻击的持续时间与参数d进行比较,取较小值,并将其加入total_duration中。

4. 返回total_duration作为结果。

三、代码实现

根据上面的核心思路,我们可以编写以下代码:

```

def find_poisoned_duration(s, d):

total_duration = 0

for i in range(len(s)):

current_duration = s[i]

if i < len(s) - 1:

next_duration = s[i + 1]

else:

next_duration = 0

overlap = min(current_duration, d)

total_duration += overlap

if current_duration > d and next_duration > d:

total_duration -= min(current_duration - d, next_duration - d)

return total_duration

```

这个函数的实现与核心思路中的步骤相对应。在遍历列表s中的每个元素时,我们分别计算出当前和下一个攻击的持续时间,并计算它们的重叠时间,最后将其累加到total_duration中。如果两个攻击的持续时间都大于d,则减去重叠部分,避免重复计算。

四、测试样例

为了验证find_poisoned_duration函数的正确性,我们需要编写一些测试样例。例如:

```

assert find_poisoned_duration([1, 4], 2) == 4

assert find_poisoned_duration([1, 2], 2) == 3

assert find_poisoned_duration([], 2) == 0

```

第一个测试样例中,s为[1, 4],d为2,因此总攻击持续时间为4。第二个测试样例中,s为[1, 2],d为2,应该返回3。最后一个测试样例中,s为空列表,因此总攻击持续时间为0。

五、总结

通过对第11关作业的分析,我们了解了Python中函数的定义和调用方法,以及如何将这些知识应用到实际编程中。我们也掌握了这个作业的核心思路,并通过编写测试样例来验证函数的正确性。这个作业虽然看起来简单,但是却涉及到Python编程中的核心概念,对于初学者来说是一个不错的练习题目。

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划