如何解决如何在 Python 中找到最小值?
最大值正常出来
我认为它只是因为你的第一个或最后一个值是序列的最大值。因为您在每次迭代时min
都完全重置。所以整个循环是没用的,任何迭代,但最后一次都没有效果。max
初始化应该在循环之外,而不是在循环内部:
max=array[0]
for i in range(n):
if i>0:
if max<array[i]:
max=array[i]
min=array[0]
for i in range(n):
if i>0:
if min>array[i]:
min=array[i]
此时对索引的检查显然是不必要的:要么吃掉不必要的array[0]
to比较array[0]
(它本身无害),要么在迭代时跳过索引:
max=array[0]
for i in range(1, n):
if max<array[i]:
max=array[i]
min=array[0]
for i in range(1, n):
if min>array[i]:
min=array[i]
本质上,您编写了一个非常复杂的版本:
if array[0] < array[-1]:
max = array[-1]
else:
max = array[0]
if array[0] > array[-1]:
min = array[-1]
else:
min = array[0]
现在为了进一步改进,假设您正在尝试学习,我们将忽略它min
并且max
已经是内置函数,因此整个事情是多余的(尽管您不应该将自己的变量命名为与内置函数相同,因为造成混乱):
-
n
没用,因为它没有被检查array
并且array
有自己的长度,n
如果它超过len(array)
,只会触发不必要的错误,或者如果它小于 ,则跳过项目len(array)
。n
如果例如输入是在经过验证的调用循环中收集的,则可能很有用input()
,但事实并非如此。 - 良好的错误处理可能会检查数组的长度是否至少为 1,否则脚本会崩溃(尽管在转换为整数之前它还需要检查各个输入值是否有效,所以......)
- 您可以在同一个循环中提取最小值和最大值,无需循环两次(在这种情况下可能不是很重要)。
- 但是 Python 对迭代器也有很好的支持,所以你应该避免在不必要的时候显式索引,这里没有。
我的看法,仍然在努力学习的范围内,将是:
array=list(map(int,input().split))
low = high = array[0]
for candidate in array[1:]:
if candidate > high:
high = candidate
if candidate < low:
low = candidate
print(f"{low} ... {high}")
另一个有趣的替代方法是对数组进行排序并获取已排序数组的第一个和最后一个元素:
array=list(map(int,input().split))
low, *_, high = sorted(array)
print(f"{low} ... {high}")
尽管它的缺点是它仅适用于长度为 2+ 的数组,而原始数组适用于“单例”数组。
sa=sorted(array); low=sa[0] ; high=sa[-1]也可以在“单例”数组上解决问题:)
解决方法
此函数查找最大值和最小值。
n=int(input())
array=list(map(int,input().split))
for i in range(n):
max=array[0]
if i>0:
if max<array[i]:
max=array[i]
for i in range(n):
min=array[0]
if i>0:
if min>array[i]:
min=array[i]
print(max,end='')
print( min)
最大值正常出现,但最小值作为第一个数组值出现。我找不到什么问题:(
你能教我什么是错的吗?
太感谢了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。