问题

定义一个int型的一维数组,包含10个元素,赋一些随机整数
然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。

思路说明

本问题是一个普通的对整数数组的操作,在下面的Python解决方法中,主要是尝试了python的一个内置函数reduce。

解决(Python)

  1. #! /usr/bin/env python
  2. #coding:utf-8
  3. from __future__ import division #实现精确的除法,例如4/3=1.333333
  4. import random
  5. def add(x,y):
  6. return x+y
  7. def operate_int_list():
  8. int_list = [random.randint(1,100) for i in range(10)] #在1,100范围内,随机选择10个整数组成一个list
  9. max_num = max(int_list)
  10. min_num = min(int_list)
  11. sum_num = reduce(add,int_list) #这里使用了reduce函数,也可以使用for循环,如下所示
  12. """
  13. sum_num = 0
  14. for i in int_list:
  15. sum_num = sum_num+i
  16. """
  17. ave_num = sum_num/len(int_list)
  18. return (int_list,max_num,min_num,sum_num,ave_num)
  19. if __name__=="__main__":
  20. int_list,max_num,min_num,sum_num,ave_num = operate_int_list()
  21. print "the int list is:",int_list
  22. print "max number is:",max_num
  23. print "min number is:",min_num
  24. print "the sum of all int in the list:",sum_num
  25. print "the average of the sum:",ave_num

解法 (racket 5.2.1)

  1. #lang racket
  2. ; 定义一个函数 operate-int-list
  3. ; 它接受一个正整数输入 n
  4. ; 它的输出是一个列表
  5. ; 列表的第一项是一个长度为 n 的列表, 此列表的每个元素都是一个 1~100 之间的伪随机数
  6. ; 列表的第二、三、四、五项分别为
  7. ; 所有伪随机数中的最大者
  8. ; 所有伪随机数中的最小者
  9. ; 所有伪随机数的总和
  10. ; 所有伪随机数中平均值,以有理数形式表示
  11. (define (operate-int-list n)
  12. (if (<= n 0)
  13. false
  14. (let*
  15. ([rand1to100 (lambda () (+ 1 (random 100)))]
  16. [random-list (for/list ([i n]) (rand1to100))]
  17. [max-int (apply max random-list)]
  18. [min-int (apply min random-list)]
  19. [sum (apply + random-list)]
  20. [average (/ (apply + random-list) (length random-list))])
  21. (list random-list
  22. max-int min-int sum average))))
  23. ; 函数调用,当程序运行正常时,运算结果在形式上类似于以下结果,
  24. ; 但每次的结果列表都有一定的随机性
  25. ; '((19 77 15 49 39 84 45 72 75 100) 100 15 575 57½)
  26. (operate-int-list 10)