我是Python新手,有一个作业问题我遇到了麻烦。作业题如下:
实现函数evenrow(),该函数接受二维整数列表,如果表的每一行总和为偶数,则返回True;否则返回False(即,如果某些行的总和为奇数)
结果应该是:
evenrow([[1,3], [2,4], [0,6]])
True
evenrow([[1,3], [3,4], [0,5]])
False
以下是我目前的功能:
^{pr2}$
出于某种原因,不管我输入什么,函数总是给我真值。有什么我忽略的吗?如有任何提示,将不胜感激!在
Tags:
一旦你
return
从一个方法中,你就不能通过循环“返回”。相反,如果找到一个奇数行,应该返回False
,因为一旦找到一个奇数行就不需要再检查任何行了。否则,如果您浏览了所有行并且没有找到奇数,那么您就知道它们都是偶数,并且可以返回True
。在或者,如果你觉得厚脸皮,看看你能不能弄明白这个超级短名单理解版是如何工作的:
^{pr2}$我认为乔兰·比斯利的答案最适合你目前的知识水平,但值得一看的是一种更为Python式的、更高阶的解决问题的方法:
你可能不会马上明白,但我想我可以解释。在
首先,
all
函数只返回True
,如果序列中的每个值都为真。这是一个非常明显的优点,它避免了“向后思考”的需要(“除非一行是奇数,否则所有行都是偶数的”)。关键是,中间的表达式是什么样的序列?在首先,如何获得行和序列?在
^{pr2}$Python允许您在列表理解中缩写此模式:
当然,这个表达式
sum(row)
可以是更复杂的,比如sum(row) % 2 == 0
:所以:
你甚至可以用一个表达式来计算,但现在你还不能用这个表达式来计算。你要做的就是把方括号变成括号:
只需检查偶数功能中的异常情况以短路 最后返回true
反之亦然
相关问题 更多 >
编程相关推荐