変数の値を変えて同じ動作を複数回行うなら関数を定義!
期待した動作と計画
for で「リストX(固定)とリストY(可変)の[0]を比較し、一致した場合はリストYの[0]を削除する。リストXが終わるか、リストYが空になれば終了する」という動作を作成。
カウンタと while で for の動作を2回行う。リストYは変化するので、 while の前でリスト1をリストYに代入し、 while の1回目のみリスト2をリストYに代入する。
発生した事象
何度も無限ループや IndexError: list index out of range に陥った
原因
while の中の for で while や if を複数書き、break/ continue の行先が想定外のところになっていることに気付けなかった。
リストXが終わるまでにリストYが空にならなかった場合、 while でリストXの2周目が始まってしまった。
「同じ動作を複数回行うなら for/ while でループ」だと思い込んでいた。
対策
こまめに print して期待通りの動作か確認する。
変数をの値を変えて同じ動作を複数回行うなら関数を定義する。
期待した動作ができた例
sk = list(input())
a = list(input())
b = list(input())
def compare(x):
for s in sk:
if s == x[0]:
del(x[0])
if x == []:
break
compare(a)
compare(b)