问题

解决(python)

解法 (racket 5.2.1)

  1. (define (2d-list)
  2. (let*
  3. ([rand-100 (lambda () (random 101))]
  4. [nth-picker (lambda (n) (lambda (l) (list-ref l n)))]
  5. [average (lambda (number-list) (exact->inexact (/ (apply + number-list) (length number-list))))]
  6. [course-list (list "coreC++" "coreJava" "Servlet" "JSP" "EJB")]
  7. [score-list (for/list ([i 20]) (for/list ([j 5]) (rand-100)))]
  8. [score-by-course-list (for/list ([i 5]) (list ((nth-picker i) course-list) (map (nth-picker i) score-list)))]
  9. [score-by-student-list (for/list ([i 20]) (list-ref score-list i))]
  10. [total-by-student-list (for/list ([i 20]) (apply + (list-ref score-list i)))]
  11. (for ([i 5])
  12. (displayln (first ((nth-picker i) score-by-course-list)))
  13. (displayln (second ((nth-picker i) score-by-course-list))))
  14. (displayln "")
  15. (displayln "NEXT IS EVERY ONE SCORE IN EVERY COURSE: ")
  16. (displayln course-list)
  17. (for ([i 10])
  18. (displayln (list-ref score-by-student-list i)))
  19. (displayln "")
  20. (displayln "every one all score: ")
  21. (displayln total-by-student-list)
  22. (displayln "")
  23. (displayln "every course of average score: ")
  24. (displayln average-by-course-list)))
  25. ; 调用函数, 正常时应输出类似如下结果
  26. ;score of every one in coreC++
  27. ;(12 58 60 28 78 23 34 83 19 83 78 26 51 94 93 74 53 89 8 23)
  28. ;... ...
  29. ;NEXT IS EVERY ONE SCORE IN EVERY COURSE:
  30. ;(coreC++ coreJava Servlet JSP EJB)
  31. ;(12 49 75 88 68)
  32. ;(58 78 6 88 81)
  33. ;... ...
  34. ;every one all score:
  35. ;(292 311 370 241 289 250 254 258 147 232 271 170 224 248 317 286 246 270 186 212)
  36. ;
  37. ;every course of average score:
  38. (2d-list)