はじめに
paizaラーニングを進めている中で、標準入力に関して混乱したので個人的な備忘録を兼ねてまとめました。
input()関数
Pythonに標準で準備されている組み込み関数の1つです。Pythonで標準入力を利用するためには、この関数を使用します。
【基本的な使用方法】
この関数を使用することで、ユーザーがキーボードで入力した値をinput()の戻り値として扱うことができます。 また以下のように変数に格納することもできます。string = input()
#start over
print(string)
#start over
【データ型に関して】
input()ではユーザーが入力した値が数値であってもデータ型は文字列型になります。 そのため文字列以外の型として使用したい場合には、適切な型に変換する必要があります。string = input()
#19981114
print(type(stirng))
#<class 'str'>
print(type(int(string)))
#<class 'int'>
標準入力のパターン
input()関数に関して、基本的なことを抑えられたのでここからは、標準入力のパターンに関してまとめていきます。
1行で複数の値がある場合
下記のようにカンマ区切りの文字列を入力した場合、変数に1行の文字列として代入されている状態なので、それぞれの名前を別個で使用することができません。sakura = input()
#タムラ,モリタ,フジヨシ,ヤマサキ
print(sakura)
#タムラ,モリタ,フジヨシ,ヤマサキ
カンマ区切りの1行であるこの文字列をそれぞれ別個のデータとして扱うためには、この文字列に対してsplitメソッドを使用します。
splitメソッドを使用することで引数に指定した記号で文字列を分割し、リストとして返してくれます。
今回はカンマ区切りの1行データなので引数は(",")とします。
※引数の指定がない場合はデフォルトでスペース区切りになる。
sakura = input().split(",")
#タムラ,モリタ,フジヨシ,ヤマサキ
print(sakura)
#['タムラ','モリタ','フジヨシ','ヤマサキ']
また、下記のように書くことで個別の変数に入力することも可能です。
a,b,c,d = input().split(",")
#タムラ,モリタ,フジヨシ,ヤマサキ
print(a)
print(b)
print(c)
print(d)
#タムラ
#モリタ
#フジヨシ
#ヤマサキ
改行で区切られた複数の値がある場合
最も簡単な方法は下記のように入力される行数に対して変数を用意してinput()の戻り値を代入する方法です。
a = input()
b = input()
c = input()
d = input()
#タムラ
#モリタ
#フジヨシ
#ヤマサキ
print(a)
print(b)
print(c)
print(d)
#タムラ
#モリタ
#フジヨシ
#ヤマサキ
上記の方法でもできますが、行数が多い場合には対応できません。
というかそもそもこの書き方自体がスマートではありません...。
この場合は、for文を使用してループで処理するのがよいです。
for文を使う際に、取り出した変数を使用しない場合は(_)と記載するとよいそうです。
member = [input() for _ in range(4)]
#タムラ
#モリタ
#フジヨシ
#ヤマサキ
print(member)
#['モリタ', 'タムラ', 'フジヨシ', 'ヤマサキ']