【Python】input の使い方

laptop-and-note-on-desk プログラミング

プログラムでは、入力を受け取って処理することは多いです。

Python での入力は input() を使います。

この記事では input() について解説します。

Python の出力については、こちらの記事で解説しています。

入力を受け取る input

input([prompt]) は、入力された1行を文字列として受け取ります。

prompt は、省略可能です。prompt があったときは、出力に書き出されます。

次は、Python という入力があったときの動作です。

コード中の # はコメントで、print() は出力です。

入力例

Python

a = input()
print(a)  # => Python

空白があっても1行すべて受け取ります。

入力例

Hello, Python!!

a = input()
print(a)  # => Hello, Python!!

promptを与えたときは次のようになります。

入力例

100

a = input('数字を入力してください:')
print(a)  # => 100
出力

数字を入力してください:100

100

整数として受け取る

input() は、文字列として入力を受け取るので、次のコードではエラーになります。

入力例

100

a = input()
print(a * 2)  # => s が文字列のためエラーになる

これは、a が文字列の 100 になっているためです。

入力を整数として受け取るには int() を使います。

次のコードは正常に動作します。

a = int(input())
print(a * 2)  # => 200

# 次のコードでも動作します。
"""
a = input()
print(int(a) * 2)
"""

浮動小数点数として受け取る

浮動小数点数として受け取るには、float() を使います。

入力例

1.7

a = float(input())
print(a * 2)  # => 3.4

空白区切りをリストで受け取る

input() は、1行すべて受け取るので空白があっても1つの変数になります。

入力例

apple banana cherry

a = input()
print(a)  # => apple banana cherry

空白区切りの入力をリストで受け取るには split() を使います。

split() は文字列を分割してリストとして返します。

print('a b c'.split())  # => ['a', 'b', 'c']

a = '1 2 3 4 5'
print(a.split())  # => ['1', '2', '3', '4', '5']

input() は文字列を返すので、input().split() とすることで、入力をリストとして受け取れます。

入力例

apple banana cherry

a = input().split()
print(a)  # => ['apple', 'banana', 'cherry']

# リストなのでインデックスでアクセスできる
print(a[0])  # => apple
print(a[1])  # => banana
print(a[2])  # => cherry

空白区切りを文字列で受け取る

split() は、リストを返します。これを利用すれば、空白区切りの入力を複数の変数で受け取ることができます。

入力例

apple banana cherry

a, b, c = input().split()
print(a)  # => apple
print(b)  # => banana
print(c)  # => cherry

複数の変数に、同時代入するには次のように書きます。

a, b = 1, 2 
print(a)  # => 1
print(b)  # => 2

リストをアンパックすることで変数に代入できます。リストの要素数だけ変数を準備します。

a, b, c = ['apple', 'banana', 'cherry'] 
print(a)  # => apple
print(b)  # => banana
print(c)  # => cherry

文字列をアンパック

文字列もアンパックして変数に代入できます。

入力例

abc

a, b, c = input()
print(a)  # => a
print(b)  # => b
print(c)  # => c

空白区切りを整数で受け取る

input() は、文字列として受け取るので、次のコードでは 6 ではなく 123 が出力されます。

入力例

1 2 3

a, b, c = input().split()
print(a + b + c)  # => 123

整数にするには int() を使いますが、次の場合はエラーになります。

a, b, c = int(input().split())  # => エラーになる

文字列として受け取った後に、int() を使って整数にすれば計算できます。

入力例

1 2 3

a, b, c = input().split()
print(int(a) + int(b) + int(c))  # => 6

map() を使えばシンプルに書けます。

入力例

1 2 3

a, b, c = map(int, input().split())
print(a + b + c)  # => 6

map() は次のように定義し、iterable のすべての要素に functionを適用します。

map(function, iterable)

map() の function に float を指定することで、浮動小数点数として受け取ることもできます。

入力例

0.2 0.8 1.2

a, b, c = map(float, input().split())
print(a + b + c)  # => 2.2

空白区切りを整数のリストで受け取る

map() はイテレータを返すので、リストで受け取るには list() を使います。

入力例

1 2 3

a = list(map(int, input().split()))
print(a)  # => [1, 2, 3]
print(a[0] + a[1] + a[2])  # => 6

複数行の入力を受け取る

競技プログラミングでは複数行にわたる入力を受けとることも多いです。

1行目にデータの個数、2行目からデータが入力される場合について解説します。

例えば、次は N 個のデータ A1、A2、…、AN が N 行に渡って入力されています。

入力例

N

A1

A2

AN

整数のリストで受け取る

list() の append メソッドを使った受け取りです。

次は、list の末尾に x を追加します。

list.append(x)
入力例

3

2

3

1

n = int(input())
a = []
for _ in range(n):
    a.append(int(input()))

print(a)  # => [2, 3, 1]

リスト内包表記

リスト内包表記を使えば、リストを簡単に生成できます。

リスト内包表記は次のように使います。

[式 for 変数 in イテラブルオブジェクト]

次のコードは、先ほどのコードと同じようなものです。

入力例

3

2

3

1

n = int(input())
a = [int(input()) for _ in range(n)]

print(a)  # => [2, 3, 1]

空白区切りを整数のリストで受け取る

N 行の空白区切りのデータを受け取る場合です。

入力例

3

1 11

2 22

3 33

n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]

print(a)  # => [[1, 11], [2, 22], [3, 33]]
print(a[0])  # => [1, 11]
print(a[0][1])  # => 11

まとめ

input() は、入力された1行をすべて文字列として受け取ります。

整数にするには int() 、浮動小数点数にするには float() を使います。

split() を使えば空白で区切ることができます。

map() を使えば複数の文字列を整数に変換できます。

# 文字列
s = input()  # 入力 123 =>  s = '123' 

# 整数
i = int(input())  # 入力 123 =>  i = 123

# 浮動小数点数
f = float(input())  # 入力 1.23 =>  f = 1.23 


# 空白区切りの文字列の変数
s1, s2 = input().split()  # 入力 1 2 =>  s1 = '1'  s2 = '2' 

# 空白区切りの整数の変数
i1, i2 = map(int, input().split())  # 入力 1 2 =>  i1 = 1  i2 = 2 

# 空白区切りの浮動小数点数の変数
f1, f2 = map(float, input().split())  # 入力 0.1 0.2 =>  f1 = 0.1  f2 = 0.2 


# 空白区切りの文字列のリスト
ls = input().split()  # 入力 1 2 =>  ls = ['1', '2']

# 空白区切りの整数のリスト
li = list(map(int, input().split()))  # 入力 1 2 =>  li = [1, 2]

# 空白区切りの浮動小数点数のリスト
lf = list(map(float, input().split()))  # 入力 0.1 0.2 =>  lf = [0.1, 0.2]


# 複数行の整数のリスト
n = int(input())
a = []
for _ in range(n):
    a.append(int(input()))

# 複数行の整数のリスト(リスト内包表記)
n = int(input())
a = [int(input()) for _ in range(n)]

# 複数行の空白区切りの整数のリスト
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]

参考

組み込み関数 – input

組み込み型 – split

組み込み関数 – map

組み込み型 – list

コレクションのアンパック

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