ここまでPythonでの条件分岐や反復処理を扱ってきました。
こういった処理と組み合わせてinput()関数を使うことがあります。
input()関数は、プログラミングを扱っている人に情報を入力させて、その情報を集めて利用する関数です。
ここではPythonでのinput()関数の使い方をみてみましょう。
input()で入力
Pythonシェルを使って、プロンプトに単にinput()とだけ入力してみます。
すると、何も起こらないわけですが、これは入力待ちの画面になります。
そこで、文字列の「a」と数値の「123」を入力してみました。
するとこうなります。(その都度、input()関数を入力しています)
入力した値が出力されているのがわかります。気をつけたいのが、数値を入力した時、この場合は「’123’」とクォーテーションで囲まれて表示されていますね。これは文字列型で出力されているということです。数値を入力しても文字列で返されているということを頭に入れておきましょう。
input()の中にクォーテーションで囲んで入力を促すメッセージを入れることができます。
input('何か入力してください。: ')
実行して見るとこうなります。
入力待ちのところに、input()内に書いたメッセージが表示されているのがわかります。
input()で入力された値を利用する
このように、Pythonでinput()関数を使うと、対話的に入力を行うことができます。これを利用して、条件分岐や反復処理と組み合わせてコードを書いてみることにします。
if文とinput()
まずif文の条件分岐とinput()を組み合わせてコードを書いてみましょう。
year = input("太平洋戦争が終わったのは西暦何年?:")
int_year = int(year)
if int_year == 1945:
print("正解!1945年ですね。")
else:
print("もっと歴史の勉強をしましょう!")
入力した数字は文字列型になりますから、今回はint()でキャストして整数に変更しています。その値を1945と比較して(==)で判定して分岐しています。
Atomで実行するとこうなります。ファイル名は、input.pyにしています。
FalseとTrueの両方の場合を実行しているのがわかります。
while文とinput ()
このコードだとその都度コードを実行しないといけないので、while文を使って書き換えてみます。
while True:
year = input("太平洋戦争が終わったのは西暦何年?:")
int_year = int(year)
if int_year == 1945:
print("正解!1945年ですね。")
break
print("もっと歴史の勉強をしましょう!")
wihle文で常にループさせることで質問を繰り返し、正解した時にbreakでプログラミングを抜けるという処理にしています。
実行してみましょう。
if文と違って、正解になるまで質問が繰り返されていることがわかりますね。
まとめ
条件分岐や反復処理とinput()関数は、よく組み合わされて利用されます。
input()は、プログラミング利用者に入力を促し、その入力された値を集めて利用することで、対話的に処理するコードを書くことができます。
input()で集められた値は数値を入力しても文字列として出力されるので、数値として利用したい場合はint()などでキャストして利用する必要があります。