问题是: 使用for循环,编写一个名为getMax4的函数,它接受一个数字列表。它确定并返回可被4整除的最大值 如果参数是空列表,则函数返回-999。如果参数列表中没有数字可被4整除,则函数返回0。 下面显示在python shell中调用函数时的输出示例:
我的代码:
# What im trying to do is e.g. let's say:
List=[1,2,3]
maximum=List[0]
for num in List:
if num > maximum:
maximum = num
print(maximum)
通过执行for循环,它首先与List[0]进行比较,后者是1,与列表中的“1”进行比较。比较1与1后,没有差别,所以最大值仍然是1。现在它移动到第二次迭代,maximum=List[0](在列表中为1),现在与列表中的2进行比较。现在2比最大值高,所以它将新的最大值更新为2。(抱歉英语不好) 所以问题是,当我试图用空集来做时,它会给我一个超出范围的索引。在
另一个问题是,当我输入示例输出中给定的值时,得到的结果是0。在
^{pr2}$
第一个问题是在
highest = List[0]
。由于List
不能保证至少有一个项,因此如果List
为空,则会出现错误。您应该添加一个支票:另一个问题是您将
highest
定义为第一项。为什么?第一项可能是最高的,只有当它可以被四整除。您应该将其设置为0
,这样即使没有可以被4整除的数字,它仍然具有示例中所需的默认值0
。在下一个问题是返回到循环内部。等待循环完成后再尝试返回。在
一旦我们解决了所有这些问题,问题是}好,尽管它比
^{pr2}$-4
比{0
低。我们可以简单地添加not highest
(highest
等于0
)的检查。新代码如下所示:关于你的第二段代码,你需要注意你的回报放在哪里。return语句将使用值退出函数。因此,这些检查应该在循环之前和之后进行,因为您的函数要求它遍历整个列表。在
我不太喜欢将初始值设置为可能是有效输出的值。因此,这是我的代码,在这里我使用
None
表示没有当前最大值的情况,但是它需要在结尾处进行额外的检查,因为应该是0。在在最后一个例子中,0是最大值,如果0不应该被4整除为有效的最大值,那么if语句需要一个额外的条件。在
相关问题 更多 >
编程相关推荐