1 # coding=gbk
2 print("如果你想推出该程序,请输入'quit'!") 3 min = max = sum = aver = 0 4 count = 2
5 num1 = input("请输入第1个数字:") 6 if num1 == 'quit': 7 print("你已退出该程序!") 8 else: 9 num1 = int(num1) 10 sum = sum + int(num1) 11 max = min = aver = num1 12 print("最大值,最小值,和,平均值均为:" + str(num1)) 13 while count: 14 num = input("请输入第" + str(count) + "个数字:") 15 if num == 'quit': 16 print("你已退出该程序!") 17 print("你一共输入了" + str(count-1) + "个整数!") 18 print("最大值:", max, "最小值:", min, "和:", sum,"平均值:",aver) 19 break
20 else: 21 num = int(num) 22 if num <= max and num >= min: 23 pass
24 else: 25 if num > max: 26 max = num 27 else: 28 min = num 29 sum += num 30 aver = sum / count 31 count += 1
32 print("最大值:",max,"最小值:",min,"和:",sum,"平均值:",aver)
看这个需求,不难理解,该程序的核心思想就是不断的比较,首先先确立第一个数字,这个数字是必须的,因为需要它与后面输入的数字做比较,(见5~12行代码)并且这第一个数还是特殊情况,最大值最小值和平均值都是其本身,完全可以单列出来。
然后,我们考虑后面输入的数字了,给比较变量max、min赋初始值0,计算变量sum、aver赋初始值0,计数变量count赋初始值2(因为第一个特殊情况为count=1,已单列出去),计数变量用来统计共输入了多少个数字,便于显示(见14行代码)和计算平均值(见30行代码),后面输入的这些数字可以看成一个整体,因为是需要不断循环比较的(见13~32行代码)。
来看一下比较的过程,第一个数字固定了比如是8,那么来输入第二个数字,这里分两种情况大于8或者小于8(见25~28行代码),再输入第三个数,这里就分两种情况了,第一输入的数介入前两个数(这里的前两个数不是前两个输入的数,而是比较之后得到的最大值和最小值这两个数)之间,包括等于这两个数,那么最大值最小值是不变的(见22~23行代码,pass是跳过的意思,这里还可以写(max=max,min=min),第二输入的数大于前面的最大值或者小于前面的最小值,那么该数取代前面的最大值或者最小值,成为新的最大值或最小值(见25~28行代码)。
最后,还需要考虑终止该程序的必要性,这里分两种情况:第一,没输入任何数字退出(见6~7行代码)。第二,输入有限个数字退出(见15~19行代码)。这里要注意的是第17行代码,为什么要count-1,这是因为如果输入的是quit,quit本身也是占据了一个count值。