廖雪峰Python教程-7.2迭代练习题
def findMinAndMax(L):
return (None, None)
# 测试
if findMinAndMax([]) != (None, None):
print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
print('测试失败!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
print('测试失败!')
else:
print('测试成功!')
解题思路:
- 当列表为空时,返回
(None, None)
。 - 当列表只有一个元素时,最小值和最大值都是这个元素。
- 当列表有多个元素时,通过迭代列表,比较每个元素与当前最小值和最大值,更新最小值和最大值。
代码实现:
def findMinAndMax(L):
if not L:
return (None, None)
else:
min_val = max_val = L[0]
for num in L:
if num < min_val:
min_val = num
elif num > max_val:
max_val = num
return (min_val, max_val)
- 首先判断列表
L
是否为空,如果为空,则返回(None, None)
。 - 如果列表不为空,初始化
min_val
和max_val
为列表的第一个元素L[0]
。 - 然后通过
for
循环迭代列表中的每个元素num
。- 如果
num
小于min_val
,则更新min_val
为num
。 - 如果
num
大于max_val
,则更新max_val
为num
。
- 如果
- 最后返回包含最小值和最大值的元组
(min_val, max_val)
。