目次
- 問題文
- 書いたコード
- 解答例
- 学んだこと
- 振り返り
問題文
###問題文の要約
一行目に以降の入力件数を、二行目以降に7があればTrue、なければFalseを表示せよ。
入力例2
3
4
11
35
出力例2
NO
書いたコード(その1)
main.py
count = int(input())
for (a, i) in enumerate(range(count)):
b = input().split()
if str(7) in b:
print("YES")
break
else:
if (a+1) == count:
print("NO")
今までは一つ一つYES,NOを表示していくパターンが多かったので、どうやって一度だけprintを表示すればいいのか迷いました。酷いな…。
今まで使ったことなかったbreakを使えたのは収穫です(苦し紛れ…。)
書いたコード(その2)
main.py
count = int(input())
box = []
for i in range(count):
box.append(input())
if str(7) in box:
print("YES")
else:
print("NO")
この記事を書いている間に思いつきました。単純に最後に評価すればいいじゃんと思ったのがこちら。
判定する値が一つだけじゃなくて複数になったらsetを使えばよさそう。
参考URL
解答例
main.py
n = int(input())
flag = False
for i in range(n):
a = int(input())
if a == 7:
flag = True
if flag:
print("YES")
else:
print("NO")
最初の段階でFalseを入れておいて、見つかったらTrueを代入する。
この方法なら条件を7の倍数とかにしても簡単に対応できるので応用が効く。
タイトルがフラグ管理、となっているのにも納得です。
学んだこと
- フラグの管理
一言
無駄だらけのコードではあったけど、enumerateの使い方には慣れてきた実感。
一つの問題に複数コードが書けたのは多少なりとも引き出しが広がった感じがします。