问题
定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课按存储顺序依次为:core C++,coreJava,Servlet,JSP和EJB。 (1)循环给二维数组的每一个元素赋0~100之间的随机整数。 (2)按照列表的方式输出这些学员的每门课程的成绩。 (3)要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。 (4)要求编写程序求所有学员的某门课程的平均分。
解决(python)
1. #! /usr/bin/env python2. #coding:utf-83. 4. from __future__ import division5. import random6. 7. 8. def score(score_list,course_list,student_num):9. course_num = len(course_list)10. 11. every_score = [[score_list[j][i] for j in range(course_num)] for i in range(student_num)]12. 13. every_total = [sum(every_score[i]) for i in range(student_num)]14. 15. ave_course = [sum(score_list[i])/len(score_list[i]) for i in range(len(score_list))]16. 17. return (every_score,every_total,ave_course)18. 19. if __name__=="__main__":20. 21. course_list = ["C++","Java","Servlet","JSP","EJB"]22. student_num = 2023. 24. score_list = [[random.randint(0,100) for i in range(student_num)] for j in range(len(course_list))]25. for i in range(len(course_list)):26. print "score of every one in %s:"%course_list[i]27. print score_list[i]28. 29. every_score,every_total,ave_one_course = score(score_list,course_list,student_num)30. print "\n"31. print "NEXT IS EVERY ONE SCORE IN EVERY COURSE:"32. for name in course_list:33. print name,34. print "\t"35. print every_score36. print "\n"37. print "every one all score:\t",every_total38. print "every course of average score:\t",ave_one_course
qiwsir#gmail.com (# to @)
解法 (racket 5.2.1)
1. #lang racket2. 3. (define (2d-list)4. (let*5. ([rand-100 (lambda () (random 101))]6. [nth-picker (lambda (n) (lambda (l) (list-ref l n)))]7. [average (lambda (number-list) (exact->inexact (/ (apply + number-list) (length number-list))))]8. [course-list (list "coreC++" "coreJava" "Servlet" "JSP" "EJB")]9. [score-list (for/list ([i 20]) (for/list ([j 5]) (rand-100)))]10. [score-by-course-list (for/list ([i 5]) (list ((nth-picker i) course-list) (map (nth-picker i) score-list)))]11. [score-by-student-list (for/list ([i 20]) (list-ref score-list i))]12. [total-by-student-list (for/list ([i 20]) (apply + (list-ref score-list i)))]13. [average-by-course-list (for/list ([i 5]) (list ((nth-picker i) course-list) (average (map (nth-picker i) score-list))))])14. (for ([i 5])15. (display "score of every one in ")16. (displayln (first ((nth-picker i) score-by-course-list)))17. (displayln (second ((nth-picker i) score-by-course-list))))18. (displayln "")19. (displayln "NEXT IS EVERY ONE SCORE IN EVERY COURSE: ")20. (displayln course-list)21. (for ([i 10])22. (displayln (list-ref score-by-student-list i)))23. (displayln "")24. (displayln "every one all score: ")25. (displayln total-by-student-list)26. (displayln "")27. (displayln "every course of average score: ")28. (displayln average-by-course-list)))29. 30. ; 调用函数, 正常时应输出类似如下结果31. ;score of every one in coreC++32. ;(12 58 60 28 78 23 34 83 19 83 78 26 51 94 93 74 53 89 8 23)33. ;... ...34. ;NEXT IS EVERY ONE SCORE IN EVERY COURSE:35. ;(coreC++ coreJava Servlet JSP EJB)36. ;(12 49 75 88 68)37. ;(58 78 6 88 81)38. ;... ...39. ;every one all score:40. ;(292 311 370 241 289 250 254 258 147 232 271 170 224 248 317 286 246 270 186 212)41. ;42. ;every course of average score:43. ;((coreC++ 53.35) (coreJava 53.9) (Servlet 51.95) (JSP 49.6) (EJB 44.9))44. (2d-list)
整理人:豆包AI助手
