python - min() arg 是一个空序列,如果没有数字进入我的 def 怎么办
问题描述
嗨,我的代码有问题,我不知道如何解决。挑战是:“需要多少个连续数字?” ...填充数组。示例:[1, 2, 4, 6] 答案应该是 2。这就是我得到的。
def consecutive(arr):
arr.sort()
minimum = min(arr)
maximum = max(arr)
diff = maximum - minimum - len(arr) + 1
return diff
问题是当 arr 为 [] 时它不起作用。我可以对我的代码进行哪些更改。
解决方案
您只能计算非空列表的最小值和最大值,因此您有两种选择:如果输入为空,则引发异常,或者在空列表的情况下提供默认值以返回。(这两种情况都由调用者决定如果列表为空则需要什么,而不是强制函数猜测适当的值。)
引发异常。
def consecutive(arr): if not arr: raise ValueError("List is empty") minimum = min(arr) maximum = max(arr) diff = maximum - minimum - len(arr) + 1 return diff
提供默认值
def consecutive(arr, if_empty=None): if not arr: return if_empty minimum = min(arr) maximum = max(arr) diff = maximum - minimum - len(arr) + 1 return diff
请注意,在这两种情况下,您都不必先对列表进行排序;两者都可以很好地处理未排序的列表min
。max
推荐阅读
- python - 计算特定月份收到的总罚款
- r - 是否可以将 GIF 添加到 R Markdown 报告中?
- r - 为什么数据没有绘制在 R 中的全局地图之上?
- reactjs - 学习者问题:一种根据状态有条件地设置一组字段样式的方法
- javascript - 根据数据文本设置文本颜色并更改图标
- unity3d - 如何在 Unity Shaders 中为 VR 获取正确的屏幕坐标?
- python - 如何修复:AttributeError:模块“tensorflow”在 JupyterNotebook 中没有属性“优化器”(使用 colab.research)
- javascript - 无法在第一页加载时获取参数
- python-3.x - 命名所有连接的 txt 文件
- amazon-web-services - AWS CodeBuild DOWNLOAD_SOURCE 失败