• 締切済み

コード(Python)の解説をして頂きたいです

このコードはスペースが2つ以上ある場合スペースを一つだけにする、そして文の最初と最後にスペースがあった場合そのスペースを消すというコードだということは理解出来たのですが、flgはなんの略なのかということと、ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans このコードのelse ansはどのような働きをしているのか分かりません。 もし宜しければ解説をして頂きたいです。 def removeExtraSpaces(theString): ans = '' flg = True for s in theString: if s == ' ': if flg: ans += s flg = False continue flg = True ans += s ans = ans[1:] if ans[0] == ' ' else ans ans = ans[:-1] if ans[-1] == ' ' else ans return ans

みんなの回答

回答No.1

>flgはなんの略なのか flag(旗)の略です。 「死亡フラグが立つ」の「フラグ」の事です。 >ans = ans[1:] if ans[0] == ' ' else ans >ans = ans[:-1] if ans[-1] == ' ' else ans これは、三項演算子です。 三項演算子とは「もし条件が真ならばbに、偽ならcになる」と言う演算子で、例えば「もし条件が真ならばbを、偽ならcをaに代入する」と言う処理は、通常のif文なら if 条件:  a = b else:  a = c と書きますが、三項演算子を使うと a = b if 条件 else c と書く事が出来ます。 ans = ans[1:] if ans[0] == ' ' else ans を書き直すと if ans[0] == ' ': ans = ans[1:] else: ans = ans になります。同様に ans = ans[:-1] if ans[-1] == ' ' else ans は if ans[-1] == ' ': ans = ans[:-1] else: ans = ans となります(else以降はansをansに代入、という無意味な動作になりますが、三項演算子ではelse以降を省略不可能なので、無意味でも、こう書く必要があります)

関連するQ&A