ABC147を行った際、問題で使ったためメモ
問題を引用しています、まずかったら消します
三項演算子とは
- 条件分岐の文が一行で表せられる便利な記述方法
'変数'='条件を満たしている時の処理' if '条件式' else '条件を満たしていない時の処理'
で書くことができる。
従来の条件式と見比べると、
if '条件式':
'条件を満たしている時の処理'
else:
'条件を満たしていない時の処理'
と、なり前者の方がスマートに見える。
例えば
今回の場合、a問題を取り上げる。
a,b,cを足して21以上になれば"bust"、そうでない場合は"win"を出力する
ように条件を設定するので
a,b,c = map(int,input().split())
ans = "bust" if a+b+c>=21 else "win"
print(ans)
このようにたった3行で書くことができる。
欠点
- 条件分岐が多い場合とても見づらくなり、間違いがあったとき他の人が確認することが困難になるという点
三項演算子を用いるのは、条件分岐が二つの時に使うくらいがちょうどいいような気がする。
appendとは
- 追記するという意味。 ここではリストに要素を追加するためのメソッドとして扱う
- 主に配列の生成や、リストの中にリストを生成したい場合に使う
例えば
今回の例だと、B問題を取り上げる。
高八士君は回文が大好きで、回文でない文字列が許せません。高八士君は文字列を 1 回ハグするごとに、文字列から 1 文字を選んで任意の文字に変える
のを判別するために入力された文字列sを逆にした文字列と比較したいから
s=input()
r=[]
a=0
for i in range(len(s)):
r.append(s[len(s)-i-1])
for i in range(len(s)//2):
if s[i]!=r[i]:
a+=1
と表せる。
このようにappendを用いることで、簡単にリストの管理が行える。
区別
attendの他にextendも同様の役割を果たすが、リストの中にリストを入れるのと、リストとリストを連結させるという違いがあるため使い分けに気をつける必要がある(らしい)。
この辺は曖昧。
まとめ
三項演算子
- 条件文が一行でまとまって便利だが条件分岐が増えれば増えるほどわかり辛さが増す
append
- ソースコードのリストを管理する際、入れ子構造を用いる場合は利用しやすい
正直他と比べるという考えることがあまりなかったので調べながらやってるので今後練習の中で色々使っていければなぁと思います。
ここまで