3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sysを使った標準入力の受け取り方(Python3)

Posted at

はじめに

就活でコーディングテストを受けることになったので、標準入力の受け取り方をまとめておきます。言語はPython3で、input()ではなくsys.stdinを使った方法を紹介します。

標準入力受け取り方

各種の入力データを処理するPythonスクリプトの例と、それに対応するサンプルデータを以下に示します。スクリプトは標準入力からデータを受け取り、特定のフォーマットに従って処理を行います。

  1. 1つの数値を取得:

    • サンプルデータ:
      42
      
    • スクリプト:
      import sys
      
      def main():
          line = sys.stdin.readline()
          number = int(line.strip())  # 文字列を整数に変換
          print(f"受け取った数値: {number}")
      
      if __name__ == "__main__":
          main()
      

    このスクリプトは、入力された行を整数として解釈し、それを出力します。

  2. 1つの文字列を取得:

    • サンプルデータ:
      hello
      
    • スクリプト:
      import sys
      
      def main():
          characters = sys.stdin.readline().strip()  # 改行文字を取り除く
          print(f"受け取った文字: {characters}")
      
      if __name__ == "__main__":
          main()
      
  3. 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()
      
  4. 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()
      
  5. 複数行に渡る数値を取得 (各行が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()
      
  6. 複数行の数値を取得 (各行の数値を個別の変数で処理):

    • サンプルデータ:
      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()
      
  7. 複数行の数値を取得 (配列で受け取る):

    • サンプルデータ:
      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で標準入力を受け取る様々な方法を紹介しました。プログラミングやコーディングテストでは、多種多様な入力形式に対応する必要があります。このため、入力データの種類(数値、文字列、配列など)やフォーマットに応じて適切な入力処理方法を選ぶことが重要です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?