#【python】listの各要素を一つづつ比較し勝敗を出すプログラム。zip()
2つの配列が与えられたときに、各々の1つ目の要素を比較し、勝った方に1点を与え、それぞれの点数を出力する。
Alice対Bob。勝った方に1点ずつ入る。引き分けの場合0点。
▼sample input
17 28 30
99 16 8
▼sampel output
2 1
▼my answer
def compareTriplets(a, b):
#勝敗数カウント用の変数をセット。初期値0
alice=0
bob=0
#与えられた配列の要素を一つづつ比較
for pair in zip(a,b):
if pair[0]>pair[1]:
alice+=1
elif pair[0]<pair[1]:
bob+=1
#戻り値を返す
return (alice,bob)
#input処理
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
a = list(map(int, input().rstrip().split()))
b = list(map(int, input().rstrip().split()))
result = compareTriplets(a, b)
fptr.write(' '.join(map(str, result)))
fptr.write('\n')
fptr.close()
##複数の配列の要素を一つづつ抜き出す
zip(配列1,配列2)
を使う
型はzip。
ネスト構造で配列1の1つ目と、配列2の1つ目の要素をセットにし、新たに1つ目の要素にする。
a=[1,2,3]
b=[4,5,6]
print(list(zip(a, b)))
#出力
[(1, 4), (2, 5), (3, 6)]
###zipとfor文の組み合わせ
a=[1,2,3]
b=[4,5,6]
for pair in zip(a,b):
print(pair)
#出力
(1, 4)
(2, 5)
(3, 6)
##rstrip()
末尾の空白を削除する
a=" a bcd efg "
a.rstrip()
#出力
' a bcd efg'
##文頭と文末の空白を削除
.strip()
先頭と末尾の空白を削除
.lstrip()
先頭の空白を削除
.rstrip()
末尾の空白を削除
※間の空白は消えない
letter=" a bcd efg "
s = letter.strip()
l = letter.lstrip()
r = letter.rstrip()
print(s)
print(l)
print(r)
#出力
a bcd efg←ここまで
a bcd efg ←ここまで
a bcd efg←ここまで
##文頭と文末の指定した文字を削除
.strip("文字列")
先頭と末尾
.lstrip("文字列")
先頭
.rstrip("文字列")
末尾
※連続しているばあいはすべて
※間の文字は消えない
letter="a bad eaa"
s = letter.strip("a")
l = letter.lstrip("a")
r = letter.rstrip("a")
print(s)
print(l)
print(r)
#出力
bad e
bad eaa
a bad e
##メソッドの出力定義
①return
呼び出しに、fptr = open(os.environ['OUTPUT_PATH'], 'w')がある場合。
メソッドは変数に代入さている。result = compareTriplets(a, b)
②print
メソッドを実行している場合。
最終出力がcompareTriplets(a, b)であれば、メソッド内はprint()とする。