Pythonでの競技プログラミング入力方法まとめ

標準入力

Pythonの勉強で競技プログラミングを行うのは、効率よく言語習得をする一つの方法であります。

今回はそんなPythonでの標準入力要綱をまとめてみました。

スペースで区切られた文字列を受け取る時(受け取り文字数無制限)

例:か つ お

a,b,c = input().rsplit()
print(a,b,c) #か つ お

これにstrip関数を付けるとリスト化できます。

入力値 = "ソード,シールド"
name = input().rsplit().split(",")
print(name) #["ソード", "シールド"]

ちなみに意味はinputで読み込んだ一行データを、rstripで受け取って、行末の改行を削除して、それをsplit関数で受け取って引数で指定したカンマで分割してリストとして代入しています。

入力値 = いつやるか いまでしょ
name = input().split(" ")
print(name) #["いつやるか", "いまでしょ"]

スペースで区切られた数値を受け取る時(受け取り数値無制限)

例:3 4 18

nums = input().split()
print(mums) # ['3', '4', "18"]

リストで収めてみました。

1列+スペースがあれば限りなくnumsに代入できます。

split()で受け取るので、intではなくstrになります。

試しにprint(type(nums))と実験するのもいいでしょう。

数字で受け取りたい場合は

nums = input().strip()
print(mums) # 3 4 18

もしくは、文字数が決められていない場合は下記のように扱うのも便利です。

for i in input().split():
    num = int(i)

こうなります。

さらに各々を指定するとしたら

a, b, c = map(int, input().strip())
print(a) # 3
print(b) # 4
print(c) # 18

となります。

result = 0
for num in input().split():
    #試しに足してみます
    result += int(num)
print(result)

こちらでも使えます

a,b = map(int,input().split())
#試しにかけてみます
print(a*b) #12

複数業の場合

1段目に下段の文字段数指定、2段目以降に文字列

count = int(input()) #1行目の数字を取得
for i in range(count):
    i = input().strip()
    print(line)

print時にリスト化したければ

count = int(input()) #1行目の数字を取得
for i in range(count):
    i = input().split()
    print(line)

にすれば良いのです。stripとsplit違いです。

これがリスト内包表記だと↓

n = int(input()) #1行目の数字を取得
s = [input() for i in range(n)] #inputからの入力をn回繰り返す

1段目に下段の文字段数指定、2段目以降に数字列

result = 0
num = int(input())
for i in range(num):
    tmp = int(input())
    # 試しに足しこんでみましょう
    result += tmp
print(result)

複数列の場合

1段目に下段の文字段数指定、2段目に文字数指定

n = int(input())
list = [int(i) for i in input().split()]
print(list)

単語n個を配列に格納する場合

例:brazil taiwan spain

通常入力

実行結果は

for country in input().split():
    print(country)
#brazil
#taiwan
#spain

内包表記の場合

list = [s for s in input().split()]

実行結果は

#['brazil','taiwan','spain']

複数行・複数列の整数値を受け取る

やや難易度が高くなりますが

例:

nは与えらえる2つの整数の行数でx_nとy_nはそれぞれ整数です。

number = int(input())
result = 0
for i in range(number):
    line = input()
    array = line.split()
    # 試しに足し込んでみましょう
    result += int(array[0] + int(array[1])
print(result)

が仮に

3

4 5

3 1

2 10

としたら結果は

#25

多次元配列を上手に受け取る

例えば、生徒が3人いて5教科のテストの点数を編集する場合

例)
3
kenta 90 100 89 70 88
daisuke 77 86 89 71 90
jiro 90 98 87 81 93

import numpy as np
students = int(input()) # 生徒数
for i in range(students):
    result = np.array(input().split(" "))
    score = result[1:].astype(int) # ここでの意味は2列目以降を数字(int)に変える
    print(score)
    print(type(score))

実行結果は

[70 78 82 57 74]
[68 81 81 60 78]
[63 76 55 80 75]
[90 100  96  10  10]
[88 78 81 97 93]

この通り、0番目の名前を省略して受け取ることができます。今回の場合、0番目がstrで1番目以降をintにしたいのに、できない時はこのnumpy関数を使用します。

ちなみに、print(type(score))とすると

<class ‘numpy.ndarray’>

とprintされます。

スクールを利用して本格的に学ぶ

いかがでしたでしょうか?

10人中9人が挫折すると言われるプログラミングを、ヒロヤンも実はプログラミングスクールで学習をしてきたからで、結果、今はPythonエンジニアとして働いています。

挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。

これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。

ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考え、結果挫折せずに今に至っています。

今なら無料でキャリアカウンセリングを行っているTechAcademyのようなプログラミングスクールもありますのでこれを機会に是非カウンセリングだけでも受けてみてはいかがでしょうか?

TechAcademyで無料のカウンセリング

上記リンク先から無料相談ができます。

またこちら(↓)ではPython専用のプログラミングスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です