Python随机数列表6项统计:求助最后两项实现方案
随机数列表统计:补全最后两项需求实现
先明确你需要完成的最后两项统计逻辑:
- 第5项:最小元素与最大元素之间的元素乘积:先找到列表中最小、最大元素的索引,确定两个索引的先后顺序(取较小索引为起始、较大索引为结束),计算这两个索引之间(不含两端元素)的所有元素乘积;若最小/最大元素为同一个或相邻,乘积默认取1。
- 第6项:第一个元素与最后一个元素之间的元素之和:计算列表去掉首尾元素后剩余部分的和;若列表长度≤2,和为0。
以下是补全后的完整代码:
import random size = int(input('Enter the size of a list: ')) begin = int(input('Enter the beginning of a list: ')) end = int(input('Enter the end of a list: ')) my_list = list() for i in range(size): my_list.append(random.randint(begin, end)) # 打印列表元素及对应索引 for i in range(len(my_list)): print(f'{my_list[i]}[{i}]', end=' ') print() # 4. 索引为3的倍数的元素乘积 mul_index_3 = 1 for i in range(0, len(my_list), 3): print(f'{mul_index_3} * {my_list[i]}[{i}] = ', end=' ') mul_index_3 *= my_list[i] print(mul_index_3) # 1-3项统计:负数、偶数、奇数之和 sum_negative = 0 sum_even = 0 sum_odd = 0 for item in my_list: if item < 0: sum_negative += item if item % 2 == 0: sum_even += item else: sum_odd += item # 5. 最小元素与最大元素之间的元素乘积 mul_between_min_max = 1 if len(my_list) >= 2: min_val = min(my_list) max_val = max(my_list) min_idx = my_list.index(min_val) max_idx = my_list.index(max_val) # 确定中间元素的起止索引 start_idx = min(min_idx, max_idx) + 1 end_idx = max(min_idx, max_idx) # 遍历计算乘积 for num in my_list[start_idx:end_idx]: mul_between_min_max *= num # 6. 第一个元素与最后一个元素之间的元素之和 sum_between_first_last = sum(my_list[1:-1]) if len(my_list) > 2 else 0 # 输出所有统计结果 print(f'Sum negative: {sum_negative}') print(f'Sum even: {sum_even}') print(f'Sum odd: {sum_odd}') print(f'Mul index multiples of 3: {mul_index_3}') print(f'Mul between min and max elements: {mul_between_min_max}') print(f'Sum between first and last elements: {sum_between_first_last}')
关键逻辑说明
- 第5项实现:
- 用
min()/max()获取极值,index()获取对应索引 - 调整索引范围确保只遍历两个极值之间的元素
- 边界情况(列表过短、极值相邻)直接返回默认乘积1
- 用
- 第6项实现:
- 利用列表切片
my_list[1:-1]快速获取首尾之间的元素 - 空切片的
sum()结果为0,无需额外判断空值
- 利用列表切片
内容的提问来源于stack exchange,提问作者Oleg Lutsik
相关产品推荐
相关产品推荐

