【Python】ターミナルまたはコマンドプロンプトから値を受け取る方法【input関数】

Python

この記事では、Pythonのinput関数の使い方を解説します。input関数を使うことで、ターミナル、またはコマンドプロンプトから値を入力してもらい、その値をコード内で使用することができます。

input関数の使い方

input([prompt])

引数のpromptが指定された場合、値を受け取る際にpromptが出力されます。

サンプル

試しに入力した値を出力して、型も調べてみましょう。

value = input()

print(f'value: {value}')
print(type(value))

name = input('name: ')

print(f'名前: {name}')
print(type(name))

実行結果

abc
value: abc
<class 'str'>
name: 太郎
名前: 太郎
<class 'str'>

文字列型以外の値を受け取る

input関数で受け取った値は、全て文字列に変換されます。なので、他の型として使用したい場合は、型を変換する必要があります。

# int()で変換
num = int(input('整数を入力してください: '))

print(type(num))

実行結果

整数を入力してください: 1
<class 'int'>

受け取った値が変換できないときの処理

受け取った値は、必ずしも変換できるとは限りません。なので、例外処理を使って変換できない場合の処理を記述しましょう。

# 例外処理
try :
    # int()で変換できなければエラー発生
    i = int(input('整数を入力: '))
except :
    # tryブロック内でエラーが発生した際の処理
    print('整数を入力してください')

実行結果

# 整数以外を入力した場合の結果
整数を入力: a
整数を入力してください

# 整数を入力した場合の結果
整数を入力: 1

さらに、無限ループと組み合わせることで、指定した型の値が入力されるまでなんども繰り返すことができます。

# 無限ループ
while True:
    # 例外処理
    try :
        # int()で変換できなければエラー発生
        i = int(input('整数を入力: '))
        # エラーが発生しなければbreakが処理され、無限ループを抜ける
        break
    except:
        print('整数を入力してください')
# 出力
print(f'受け取った値: {i}, type: {type(i)}')

実行結果

整数を入力: a
整数を入力してください
整数を入力: あ
整数を入力してください
整数を入力: 1
受け取った値: 1, type: <class 'int'>

複数の値を受け取る

input関数で値を渡す際、Enterで決定して値を渡します。なので、改行して複数の値を渡すことはできません。input関数で複数の値を受け取るには以下の方法があります。

  • input関数を複数使用する
  • リストを使う
  • 無限ループを使う
  • 受け取った値を分割する

input関数を複数使用する

input関数を使用した回数だけ、値を受け取ることができます。

a = input('a: ')
b = input('b: ')
c = input('c: ')

print(f'a, b, c: {a}, {b}, {c}')

実行結果

a: 1
b: 2
c: 3
a, b, c: 1, 2, 3

リストを使う

以下のコードは、最初に受け取る値の個数を決めて、その数だけ値を受け取るコードです。

# 取得する値の数
len = int(input('length: '))
# 結果を受け取るリスト
results = []

# lenの数だけ繰り返し
for i, l in enumerate(range(len), 1):
    results.append(input(f'val {i}: '))


print(results)

実行結果

length: 3
val 1: 9
val 2: 8
val 3: 7
['9', '8', '7']

無限ループを使う

以下のコードは、「EOF」または「eof」が入力されるまで値を取得し続けます。

i = 1
results = []

# 無限ループ
while True:

    val = input(f'val {i}: ')

    # 「EOF」か「eof」が入力されたら値を受け取るのをやめる
    if val in ('EOF', 'eof'):
        break
    else:
        results.append(val)
        i += 1


print(results)

実行結果

val 1: 9
val 2: 8
val 3: 7
val 4: eof
['9', '8', '7']

受け取った値を分割する

文字列のメソッドであるsplit()を使うことで、文字列を特定の文字で分割することができます。

val = input('x,y,z: ')

# ,で分割
xyz = val.split(',')

print(xyz)

実行結果

x,y,z: 1,2,3
['1', '2', '3']

まとめ

この記事では、Pythonのinput関数について解説しました。

外部から値を受け取ることで、じゃんけんなどのちょっとした遊びも実装することができます。勉強の一環として実装してみては如何でしょうか。ちなみに、じゃんけんを実装するにはinput関数のほかに、乱数if文を使うことで実装することができます。

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

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