博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 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值。