Python input()での標準入力のあれこれ〜基礎編〜

Python

この記事では、競技プログラミングやpaizaのスキルチェックで使えるような、「input()」を使用した標準入力について取り上げていきます。

大きく分けて、文字列型で取得するか、数字型で取得するかに分かれるので、順番に解説していきます。

文字列を取得

この章では「文字列」の取得の仕方について見ていきます。

基本的な使い方

まずは基本的な使い方から見ていきましょう。

入力に「a」という文字列が与えられるので、それを取得していきたいと思います。

入力
a
word = input()
print(word)
# a

しっかり取得できているのを確認できますね。

input()

上記を使用することで、1行を文字列型として取得することができます。

複数の入力を取得

では次に複数の入力が与えられた時の取得の仕方を見ていきましょう。

入力
a b
word1, word2 = input().split()   # split()を使うことで、空白で分割して、word1とword2に代入
print(word1)
# a
print(word2)
# b

しっかり取得できているのが確認できますね。

input().split()

上記で空白で区切られた複数の文字列を取得できます。

注意点

入力
a b c
word1, word2 = input().split()
# ValueError: too many values to unpack (expected 2)

上記のように、入力の個数分受け皿である変数を用意しておかないとエラーになってしまうので、注意してください。

複数の入力をリストとして取得

次に複数の入力をリストにして取得する方法を見ていきましょう。

入力
a b
words = input().split()
print(words)
# ['a', 'b']

しっかりリストで受け取ることができていますね。

先ほどと受け取り方は同じなので不思議に感じるかもしれませんが、受け皿である変数が1つの時はリストとして取得し、変数が2つ以上の時は一つずつ取得していると理解してください。

文字列をバラバラにしてリストに格納

では「abc」のような文字列をバラバラにして、リストに格納するにはどのようにしたら良いかを見ていきましょう。

入力
abc
words = list(input())
print(words)
# ['a', 'b', 'c']

しっかり取得できていますね。くっついている時は「list()」で分割できるので、これも覚えておきましょう。

list(input())

上記で文字列を分割して取得できます。

数字を取得

この章では「数字」の取得の仕方を見ていきます。

基本的な使い方

まずは基本的な使い方から見ていきましょう。

入力に「1」が与えられるので、それを数字として取得していきたいと思います。

入力
1
number = int(input())
print(number)
# 1
print(type(number))
# <class 'int'>

「1」がint(数字)として取得できています。

int(input())

上記で文字列としてとってきたものを数字に変換して取得できました。

複数の数字を取得

では次に複数の入力が与えられた時の取得の仕方を見ていきましょう。

入力
1 2
number1, number2 = map(int, input().split())   # split()を使うことで、空白で分割して、word1とword2に代入
print(number1)
# 1
print(number2)
# 2

しっかり取得できているのが確認できますね。

map(int, input().split())

上記の「map関数」を使用することで、空白で区切られた複数の値を数字として取得できます。

注意点

入力
1 2 3
number, number2 = map(int, input().split())
# ValueError: too many values to unpack (expected 2)

文字列の方でも説明しましたが、入力の個数分受け皿である変数を用意しておかないとエラーになってしまうので、注意してください。

複数の入力をリストとして取得

次に複数の入力をリストにして取得する方法を見ていきましょう。

入力
1 2
numbers = list(map(int, input().split()))
print(numbers)
# [1, 2]

しっかりリストで受け取ることができていますね。

先ほど分割できていたものを「list()」でリストに入れ込むというイメージです。

文字列をバラバラにしてリストに格納

では「abc」のような文字列をバラバラにして、リストに格納するにはどのようにしたら良いかを見ていきましょう。

入力
123
word = input()
numbers = [int(x) for x in word]
print(words)
# [1, 2, 3]

しっかり取得できていますね。

文字列の時と同じように簡単にはできないですが、リスト内包表記を使うことで実装できます。

[int(x) for x in word]

# これと同じ
numbers = []
for x in word:
    numbers.append(int(x))

リスト内包表記は一見難しそうですが、やっていることは上記のfor文と同じです。

ただコードの長さがだいぶ違うので、リスト内包表記を使用することをお勧めします。

まとめ

最後に今回学んだことをまとめていきましょう。

# 文字列

# 基本的な使い方
# 入力 a
word = input()
print(word)
# a

# 複数を分割して取得
# 入力 a b
word1, word2 = input().split()
print(word1)
# a
print(word2)
# b

# 複数をリストにして取得
# 入力 a b
words = input().split()
print(words)
# ['a', 'b']

# 1つを分割してリストに格納
# 入力 abc
words = list(input())
print(words)
# ['a', 'b', 'c']

# 数字

# 基本的な使い方
# 入力 1
number = int(input())
print(number)
# 1

# 複数を分割して取得
# 入力 1 2
number1, number2 = map(int, input().split())
print(number1)
# 1
print(number2)
# 2

# 複数をリストにして取得
# 入力 1 2
numbers = list(map(int, input().split()))
print(numbers)
# [1, 2]

# 1つを分割してリストに格納
# 入力 123
word = input()
numbers = [int(x) for x in word]
print(words)
# [1, 2, 3]

最後に

今回はpythonの「input()」の使い方を見てきました。

最初は使いこなすのに苦労すると思いますが、使っていくうちにだんだん身についてくるので、焦らず挑戦してみてください。

今後も記事を更新していくので、ぜひ覗いてみてください。

コメント

タイトルとURLをコピーしました