python - 我在 Python 中编写了一个代码来从 5 个元素的数组中找到 4 个元素的最大值和最小值
问题描述
我正在编写一个代码来计算最大值和最小值列表的总和。5 个元素列表中的 4 个元素。我的代码工作正常,直到它被引入到大号的。
def miniMaxSum(arr):
sum1=0
small=arr[0]+arr[1]+arr[2]+arr[3]+arr[4]
lar=0
for i in range(0,4):
sum1=0
for j in range(0,4):
if i+j<=4:
sum1+=arr[i+j]
else:
sum1+=arr[(i+j)-5]
if sum1>=lar:
lar=sum1
if sum1<=small:
small=sum1
print("Minimum:",small,"Maximum:",lar)
if __name__ == '__main__':
arr = list(map(int, input().rstrip().split()))
miniMaxSum(arr)
如果我使用 Small no,我会得到正确的答案。在数组中。但是,当引入大号示例时,它不能显示最小总和:396285104 573261094 759641832 819230764 364801279 最大值工作正常但最小值即将到来 2153578241 而不是 2093989309
解决方案
您当前代码的问题不是大数字,而是索引 3。您永远不会从计算中排除该索引,因此如果它是列表中最大的或最小的,您将得到错误的结果。
你从不跳过索引 3 的原因是你的外循环运行是 on range(0, 4)
,内循环也是。这意味着您需要从索引 0 到 3 开始的四个项目。但是您永远不会从索引 4 开始,在这种情况下会跳过索引 3。
因此,您可以通过简单的修复来修复您的代码:
for i in range(0, 5): # replace 4 with 5 here!
sum1=0
for j in range(0,4):
...
我注意到有很多更有效的方法可以解决这个问题。例如,您可以计算列表中所有五个值的总和(small
尽管使用内置sum
函数会更容易,但您已经在执行此操作),然后找到单个最大值和最小值(可能使用min
andmax
函数) . 然后,您可以通过从所有项目的总和中减去最大的单个项目来找到四个项目的最小总和,而通过减去最小的单个项目来找到四个项目的最大总和。
def miniMaxSum(arr):
arr_sum = sum(arr)
min_val = min(arr)
max_val = max(arr)
print("Minimum:", arr_sum - max_val, "Maximum:", arr_sum - min_val)
推荐阅读
- android - Android:使用 Admob 的 Consent SDK 获取用户的位置
- visual-studio - 如何仅计算 rdlc 报告中的不同值
- java - Windows 和 Unix 机器之间的 Maven 构建结果不同
- abap - 循环 itab where 字段类型表访问字段
- heroku - 如何在应用程序内让 Heroku 免费层上只有工人活着?
- json - 带有json的邮递员Symfony请求
- javascript - 如何使用 JavaScript 或 jQuery 从 URL 下载文件?
- php - Woocommerce 模板的 index.php 中的 category__not_in 不起作用
- active-directory - anr中的两个等号(==)不起作用
- qt - QProcess 无法从 ProgramFiles 启动/执行