球数制限
球数制限
n, k = map(int, input().split())
m = sum(int(input()) for _ in range(n))
print('Yes' if m < k else 'No')
リスト内包表記で入力するのと同様に、 sum() 関数の引数に内包表記で書くこともできます。list() が sum() になったと見ればわかるかと思います。
最大イニング
最大イニング
例1
例2
6イニングでぴったり投げきった時
- > で比較した時
- 次のループに移り、i が
7
になってから break します。 - >= で比較した時
- ぴったりなので、i が
6
の時点で break してしまいます。
k = int(input())
ball = 0
for i in range(1, 10):
m = int(input())
if ball + m > k:
ball += m
break
if i == 9:
print('Yes')
else:
print(i)
k = int(input())
ball = 0
for i in range(1, 10):
m = int(input())
if (ball:=ball + m) > k:
break
print('Yes' if i == 9 else i)
例1、例2共通して言えるのが、 文で使った変数 i
は、ループを抜けても値が残っているという点です。その i
を最後の出力時の判定にも用いています。
問題文の最後の一行にある条件は、用いる比較演算子で解決できます。
例2で使われている := の意味は「3章 補足 - :=」で知ることができます。
ロボットの移動
ロボットの移動
x, y = map(int, input().split())
print(abs(x) + abs(y))
(0, 0) を中心としているので、マイナスの値(負数)になったとしても移動ステップ数は変わりません。
3ステップ -3 ← 0 → 3 3ステップ
x も y も 絶対値にしてしまいましょう。
最大の差
最大の差
points = [int(input()) for _ in range(5)]
print(max(points) - min(points))
max() 関数と min() 関数に引数にあてるため、入力はリストにして受け取ります。そして最大値から最小値を引いた数を求めればOK👌。
中央値
中央値
points = [int(input()) for _ in range(5)]
print(sorted(points)[2])
ソートして真ん中の要素番号を指定すればOK👌。要素数が奇数なので、必ず中央があります。変数にすると、
n = 5 # 必ず奇数であることが条件
points = [int(input()) for _ in range(n)]
print(sorted(points)[n//2]) # 5//2 = 2
と書けます。
採点
採点
例1
例2
例3
n = int(input())
point = 0
for _ in range(n):
m = input()
if m == 'correct':
point += 2
elif m == 'incorrect':
point -= 1
print(point)
n = int(input())
m = [input() for _ in range(n)]
point = 0
for result in m:
if result == 'correct':
point += 2
elif result == 'incorrect':
point -= 1
print(point)
n = int(input())
m = [input() for _ in range(n)]
scoring_list = {'correct': 2, 'incorrect': -1,'no_answer': 0}
point = sum(scoring_list[result] for result in m)
print(point)
例1は個別に読み込んで採点しています。
例2は入力をリストに全て読み込んでから採点しています。
例3は解答結果とそれに関係した点数を辞書にして、 sum() 関数で合計点を算出しています。