[プログラマーlv 2]圧縮Python


2018 KAKAO BLIND RECRUITMENT問題
メニューさえ押せば簡単に解ける質問です.
しかし、文字列インデックス部分では、いくつかの混同点があるので、考察して文章を書きます.
以下に、通過したコードを記述します.

def solution(msg):
    answer = []
    dic = {"A":1,"B":2,"C":3,"D":4,"E":5,"F":6,"G":7,"H":8,"I":9,"J":10,"K":11,"L":12,"M":13,"N":14,"O":15,"P":16,"Q":17,"R":18,"S":19,"T":20,"U":21,"V":22,"W":23,"X":24,"Y":25,"Z":26}

    while msg!="":
        for i in range(len(msg)):
            if msg[:len(msg)-i] in dic.keys():
                w=msg[:len(msg)-i]
                answer.append(dic[w])
                msg=msg[len(msg)-i:]
                c=msg[0:1]
                dic[w+c]=max(dic.values())+1
                break


    return answer
問題のメニューバー
3.wに対応する辞書のインデックス番号を出力し、入力からwを削除します.
4.入力に未処理の次の文字がある場合は、予め(c)、w+cの対応する単語を登録する.
部分的にcを保存する場合
msg=msg[len(msg)-i:]
c=msg[0:1]
文字列クリップは、文字列を削除するプロセスです.
斜体文字列の最初の文字をcに格納する方法が実現される.
でもここにいたら.
msg=msg[len(msg)-i:]
c=msg[0]
これに変えれば.

こうしてインデックスエラーが発生しました.
原因がmsgが「」の場合
1.msg[0]可読性なし、インデックス外エラー
2.msg[0:1]などの斜線は、インデックスに値がない場合でも空の文字列を返します.=>概念をさらに拡張すると、インデックスが存在する値が返され、存在しない場合はNULLが返されます.
この効果はpythonの正式なドキュメントでも見つけることができます.

ソース:https://docs.python.org/3.10/tutorial/introduction.html#strings