はじめに
就活でコーディングテストを受けることになったので、標準入力の受け取り方をまとめておきます。言語はPython3で、input()
ではなくsys.stdin
を使った方法を紹介します。
標準入力受け取り方
各種の入力データを処理するPythonスクリプトの例と、それに対応するサンプルデータを以下に示します。スクリプトは標準入力からデータを受け取り、特定のフォーマットに従って処理を行います。
-
1つの数値を取得:
- サンプルデータ:
42
- スクリプト:
import sys def main(): line = sys.stdin.readline() number = int(line.strip()) # 文字列を整数に変換 print(f"受け取った数値: {number}") if __name__ == "__main__": main()
このスクリプトは、入力された行を整数として解釈し、それを出力します。
- サンプルデータ:
-
1つの文字列を取得:
- サンプルデータ:
hello
- スクリプト:
import sys def main(): characters = sys.stdin.readline().strip() # 改行文字を取り除く print(f"受け取った文字: {characters}") if __name__ == "__main__": main()
- サンプルデータ:
-
1行に複数の数値を取得 (各変数で受け取る):
- サンプルデータ:
a b c
- スクリプト:
import sys def main(): line = sys.stdin.readline().strip() # 改行文字を取り除く a, b, c = map(int, line.split()) print(f"受け取った数値: a: {a}, b: {b}, c: {c}") if __name__ == "__main__": main()
- サンプルデータ:
-
1行に複数の数値を取得 (配列として受け取る):
- サンプルデータ:
a b c
- スクリプト:
import sys def main(): line = sys.stdin.readline().strip() # 改行文字を取り除く numbers = list(map(int, line.split())) print(f"受け取った配列: {numbers}") if __name__ == "__main__": main()
- サンプルデータ:
-
複数行に渡る数値を取得 (各行が1つのデータとして配列に格納される):
- サンプルデータ:
N //行数 A_1 A_2 ・ ・ ・ A_N
- スクリプト:
import sys def main(): n = int(sys.stdin.readline().strip()) # 行数の入力 A_list = [int(sys.stdin.readline().strip()) for _ in range(n)] # 各行の数値をリストに格納 print(f"受け取った配列: {A_list}") if __name__ == "__main__": main()
- サンプルデータ:
-
複数行の数値を取得 (各行の数値を個別の変数で処理):
- サンプルデータ:
N //行数 1 2 3 4 5 6 ・ ・ ・ a b c
- スクリプト:
import sys def main(): n = int(sys.stdin.readline().strip()) # 行数の入力 for _ in range(n): a, b, c = map(int, sys.stdin.readline().strip().split()) # 各行の数値を個別の変数に割り当て # 以下にa, b, cに対する処理を書く if __name__ == "__main__": main()
- サンプルデータ:
-
複数行の数値を取得 (配列で受け取る):
- サンプルデータ:
N //行数 1 2 3 4 5 6 ・ ・ ・ a b c
- スクリプト:
import sys def main(): n = int(sys.stdin.readline().strip()) # 行数の入力 data = [list(map(int, sys.stdin.readline().strip
- サンプルデータ:
まとめ
この記事では、Pythonで標準入力を受け取る様々な方法を紹介しました。プログラミングやコーディングテストでは、多種多様な入力形式に対応する必要があります。このため、入力データの種類(数値、文字列、配列など)やフォーマットに応じて適切な入力処理方法を選ぶことが重要です。