1、十个评委给学生打分,规则是去掉最高分和最低分,然后求平均值。
分析:首先求出最高分和最低分,然后再求和,最后再求平均值。
先把十个分数看成是一个列表里的元素,求最高分时,先假设第一个最大,然后去跟相邻的比较,如果大就保留,如果小就保留另一个。
关键是不能引入外值,只能在十个分数里选一个先作为最大的,然后去比较。求最小是同样的道理。
用while循环写的程序
a = []i = 0while i<10: score = int(input("请输入分数:")) a.append(score) i+=1i = 0score_min = a[0]score_max = a[0]score_sum = 0score_avg = 0while i<10: if a[i] > score_max: score_max = a[i] if a[i] < score_min: score_min = a[i] score_sum = score_sum + a[i] i +=1score_avg = (score_sum-score_max-score_min)/8print("最大的分数是:",score_max)print("最小的分数是:",score_min)print("分数的平均值是:",score_avg)
用for循环写的程序
score_list = [] for i in range(10): score = float(input("请输入分数:")) score_list.append(score) score_max = score_list[0] score_min = score_list[0] score_sum = 0 for i in range(10): if score_list[i] > score_max: score_max = score_list[i] if score_list[i] < score_min: score_min = score_list[i] score_sum = score_sum + score_list[i] score_avg = (score_sum - score_max - score_min)/8 print("去掉最大值:%.2f\t去掉最小值:%.2f\n最终的平均得分是:%.2f"%(score_max,score_min,score_avg))
2、冒泡排序
分析:加入给一个列表啊 a=[9,8,7,6,5],如果要想从小到大排序,需要第一个位置的数依次跟其他位置的数比较,比相邻的大,就互换位置,最终到最后的位置。五个元素,循环四次才能确定最大的到最后位置,然后剩四个元素不确定顺序,然后再循环比较三次,确定倒数第二个位置,这样最终需要确定四个位置就需要四趟,每一趟就比上一趟少循环一次。
关键:四趟是一个外大循环,外循环的次数就是列表的长度减去1
每一趟的循环都比上一趟少一次,是一个根外循环参数先关的内循环,作用是确定大小位置
内循环的比较,有可能需要交换彼此的位置,所以,要有一个交换的算法,就是引入一个变量c,当a[i]>a[i+1]时,执行
c = a[i]
a[i] = a[i+1]
a[i+1] = c,最后实现前后位置的值互换
下面是用while循环写的程序
a = [9,8,7,6,5] j = 0 while j<4: i = 0 while i<(4-j): if a[i] > a[i+1]: t = a[i] a[i] = a[i+1] a[i+1] = t i += 1 j += 1 print(a)
下面是用for循环写的程序
a = [9,8,7,6,5] for j in range((len(a)-1)): for i in range((len(a)-1)-j): if a[i] > a[i+1]: c = a[i] a[i] = a[i+1] a[i+1] = c print(a)
原文地址:https://www.cnblogs.com/thoughtful-actors/p/9484263.html
时间: 2024-10-13 14:47:27