[プログラマーLV 2]さっきの歌


1.問題の説明
さっきの歌は
2.問題分析
再生時間を求め、その時間のメロディーを求める.この場合、再生時間が短くなったり長くなったりすることも考えられます.このときに記憶中のメロディーが含まれている場合は、再生時間とインデックスを一緒に記録します.複数の音楽がある場合は、再生時間、インデックス順に並べ替えて値を返します.
3.私の回答
import math
def get_min(time1, time2):
    hour1 = int(time1[:2])
    hour2 = int(time2[:2])
    min1 = int(time1[3:])
    min2 = int(time2[3:])
    return ((hour2-hour1) *60 + (min2 - min1))

def solution(m, musicinfos):
    
    change_code = {'C#' : 'c', 'D#' : 'd', 'F#' : 'f', 'G#' : 'g', 'A#' : 'a'}
    result = []
    idx = 1
    
    for key in change_code.keys():
        if key in m:
            m = m.replace(key, change_code[key])
    
    
    for music in musicinfos:
        ms = music.split(',')
        time = get_min(ms[0], ms[1])

    
        for key in change_code.keys():
            if key in ms[3]: 
                ms[3] = ms[3].replace(key, change_code[key])
        
        len_ms = len(ms[3])
        ms[3] *= math.ceil(time/len_ms)
        ms[3] = ms[3][:time]
        print(ms[3])
        
        if m in ms[3]:
            result.append([time, idx, ms[2]])
            idx += 1
            
    if not result: return "(None)"
    
    result.sort(key=lambda x: (-x[0], x[1]))
    return result[0][2]
いくつかのスコアリングケースでは、Noneではなく文字列(None)を返すのに失敗しています.あと~しないときはdefault returnを使うときは、コードを確認してから返す習慣をつけましょう.