F - 1.05.入力 Editorial /

Time Limit: 0 msec / Memory Limit: 0 KB

前のページ | 次のページ

キーポイント

  • 変数 = input() で入力を文字列として受け取ることができる
    • 整数として受け取るためには 変数 = int(input()) とする
  • 1 行をまとめてひとつの文字列として受け取る
    • 空白で区切って複数の文字列として受け取るためには 変数1, 変数2 = input().split() などとする

入力の受け取り方

プログラムの実行時にデータの入力を受け取る方法を見ていきましょう。
「入力機能」を使うことにより、プログラムを書き換えなくても与える入力を変えることで様々な計算を行えるようになります。

入力を受け取るには input() を使います。

次のプログラムは、入力として受け取った文字列を 3 回出力するプログラムです。

s = input()

print(s)
print(s)
print(s)
入力
Pythonだいすき
実行結果
Pythonだいすき
Pythonだいすき
Pythonだいすき

文字列以外の入力

入力を文字列以外の形式で扱いたいときは、入力を受け取った後に変換する必要があります。

次のプログラムは、入力として受け取った整数を 10 倍したものを出力するプログラムです。

# 入力を文字列として受け取る
a = input()
# 文字列として受け取った入力を整数に変換する
a = int(a)

print(a * 10)
入力
5
実行結果
50

上のプログラムは、以下のように「入力を文字列として受け取り整数に変換する部分」をまとめて書くこともできます。

# 入力を整数として受け取る
a = int(input())

print(a * 10)
入力
5
実行結果
50

入力を小数として受け取りたい場合も、float() を使って以下のように書くことができます。

# 入力を小数として受け取る
a = float(input())

print(a * 10)
入力
3.14
実行結果
31.4

複数行の入力

input() は 1 行の入力を受け取るものなので、input() を行数分書くことで複数行の入力を受け取ることができます。

s = input()
a = int(input())

print(s, a * 10)
入力
Hello
5
実行結果
Hello 50

空白区切りの入力

前述のように、input() は 1 行の入力を文字列として受け取ります。

s = input()

print(s)
入力
10 20 30
実行結果
10 20 30

そのため、空白区切りの入力を受け取ると、上のように "10 20 30" というひとまとまりの文字列として受け取ってしまいます。

そこで、次のプログラムのように input() で受け取った文字列を split() で空白区切りで分解することで別々の変数に格納することができます。

a, b, c = input().split()

print(a)
print(b)
print(c)
入力
10 20 30
実行結果
10
20
30

このままだと文字列として扱っていますが、次のプログラムのように int() を使って整数に変換することもできます。

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)

print(a * 10)
print(b * 100)
print(c * 1000)
入力
10 20 30
実行結果
100
2000
30000

上のプログラムは、以下のように「入力を空白区切りで分割し整数に変換する部分」をまとめて書くこともできます。
map(int, input().split()) の意味については今の時点では理解する必要はありません。このまま覚えてしまっても良いでしょう。

a, b, c = map(int, input().split())

print(a * 10)
print(b * 100)
print(c * 1000)
入力
10 20 30
実行結果
100
2000
30000

また、split() は以下のように区切り文字を指定することもできます。
これまでのように何も指定しない場合は、空白文字で区切られます。

a, b, c = input().split(":")

print(a)
print(b)
print(c)
入力
10:20:30
実行結果
10
20
30

問題

リンク先の問題を解いてください。