前提・実現したいこと
pythonの初心者向けの動画を一時停止しながら書いたコードで
発生しているassertion Errorを解決したい。
以下のAssertionErrorで止まってしまいます・・
assert solution(classes2) == answer2 AssertionError
該当のソースコード
python
1#課題:ある学校の授業の時間割が与えられる 2#1つの教室で同時にできる授業は1つまで 3#学校に教室はいくつ必要か? 4#[(開始時間, 終了時間) , 。。。] 5#以下動画の中の説明のメモありです・・ 6 7classes1 = [(0, 50), (50, 100)] 8answer1 = 1 9classes2 = [(0, 50), (50, 100), (25, 75)] 10answer2 = 2 11classes3 = [(10, 50), (20, 30), (60, 100), (70, 90)] 12answer3 = 2 13classes4 = [(900, 910), (940, 1200), (950, 1120), (1100, 1130), (1500, 1900), (1800, 2000)] 14answer4 = 3 15 16def overlaps(a, b): #授業を2つ受け取って 17 return b[0] < a[0] and a[0] < b[1] 18#True 授業aの開始時間が授業bの開始時間より遅い、かつ、授業aが授業bの終了時間に入っていたらかぶっていると判定する 19 20 21def solution(classes):#授業の一覧が送られる 22 num_classes = len(classes)#全ての授業の数 23 max_rooms = 1 #最終的に返す値、瞬間的に必要となる教室の最大数、絶対に1教室は必要なので1から始める 24 for i in range(num_classes): #全ての時間割をチェックする 25 rooms = 1 #ある授業を開催する際に必要になる教室数を入れるため 26 for j in range(num_classes):# このforはiの時間割を全ての時間割と比較するため 27 if i == j: #もしも同じ授業だったら、 28 continue #チェックせずに継続する(1つ目の授業と1つ目を比べても意味がないため) 29 if overlaps(classes[i], classes[j]):#もし授業iと授業jがかぶっていたなら、 30 rooms =+ 1 #roomsに1を追加する 31 max_rooms = max(max_rooms, rooms)#これまで必要になった教室の数より多いようだったらmax_roomsを返す 32 return max_rooms 33 34assert solution(classes1) == answer1#assertはこの条件が満たされなければここでプログラムが停止するという意味 35assert solution(classes2) == answer2 36assert solution(classes3) == answer3 37assert solution(classes4) == answer4 38print("Okay")#return max_roomsまでのコードが正しかったらRunした結果はOkayとなる=assertは正解であるとなる 39
試したこと
動画の中で最初にassert solution(classes2) == answer2の同じエラーが発生しているのですが、
動画で修正したように修正したはずなのですが、動画に写ってない部分があるのか、エラーになります・・
補足情報(FW/ツールのバージョンなど)
AWS Cloud9で実行しています。
回答3件
あなたの回答
tips
プレビュー