回答編集履歴

2

追記

2018/11/23 09:00

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -45,3 +45,85 @@
45
45
 
46
46
 
47
47
  片やgradeで、片やgradesだからです。統一してください。
48
+
49
+
50
+
51
+ ---
52
+
53
+ また、次の部分ですが...
54
+
55
+ > ```Python
56
+
57
+ class Grades(object)
58
+
59
+ ...
60
+
61
+ def addGrade(self, student, grade):
62
+
63
+ """gradeをfloat型とする
64
+
65
+ gradeをstudentの成績リストへ追加する"""
66
+
67
+ try:
68
+
69
+ self.grades[student.getIdNum()].append(grade)
70
+
71
+ except:
72
+
73
+ raise ValueError('Student not in mapping')
74
+
75
+ > ```
76
+
77
+
78
+
79
+ try-exceptが物凄く気になります。
80
+
81
+ 例外は確かに強力ですが、この用法だと自らの首を絞めます。
82
+
83
+ ```Python
84
+
85
+ >>> try:
86
+
87
+ ... haoigheowahfawfa
88
+
89
+ ... except:
90
+
91
+ ... pass
92
+
93
+ ...
94
+
95
+ >>> # こんなコードでもエラーが出ないで通ってしまう
96
+
97
+ ```
98
+
99
+
100
+
101
+ しっかりと用法を把握するまでは、できるだけif文で対処した方が良いです。
102
+
103
+ 例外を用いるにしても、せめて例外オブジェクトの種類を限定してください。
104
+
105
+ ```Python
106
+
107
+ class Grades(object)
108
+
109
+ ...
110
+
111
+ def addGrade(self, student, grade):
112
+
113
+ """gradeをfloat型とする
114
+
115
+ gradeをstudentの成績リストへ追加する"""
116
+
117
+ try:
118
+
119
+ self.grades[student.getIdNum()].append(grade)
120
+
121
+ except KeyError:
122
+
123
+ raise ValueError('Student not in mapping')
124
+
125
+ ```
126
+
127
+
128
+
129
+ これなら幾分かマシです。

1

修正

2018/11/23 09:00

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -24,19 +24,21 @@
24
24
 
25
25
  ...
26
26
 
27
- def addGrade(self, student, grade):
27
+ def addStudent(self, student):
28
28
 
29
- """gradeをfloat型とする
29
+ """studentStudent型とする
30
30
 
31
- gradeをstudent成績リストへ追加する"""
31
+ student成績ブックへ追加する"""
32
32
 
33
- try:
33
+ if student in self.students: #AttributeError
34
34
 
35
- self.grades[student.getIdNum()].append(grade)
35
+ raise ValueError('Duplicate student') #重複した生徒
36
36
 
37
- except:
37
+ self.students.append(student)
38
38
 
39
- raise ValueError('Student not in mapping')
39
+ self.grades[student.getIdNum()] = []
40
+
41
+ self.isSorted = False
40
42
 
41
43
  > ```
42
44