Python input関数の使い方

Python学習【365日チャレンジ!】40日目のマスターU(@Udemy11)です。

なんだかんだいって、一桁の数字が0になるとキリのいい数字に感じてしまいます。

今日でPython学習を40日継続していますが、これまでに取り組んできたことよりかなりスムーズに?楽に?継続することができています。

やっぱり、知らないことを悩みながら解決していくことって楽しいし、このスタイルが自分にあってるからだと思います。

さて、今日はいよいよユーザーに値の入力を求めるinput関数です。

WebサイトやWebアンケートでも入力してもらうことがありますが、まさにこのinput関数が使われていると思うと、ちょっと感動しちゃいます。

それでは、今日もしっかり学習しましょう!

昨日の復習

昨日は、while else文を学習しました。

if文でも使われるelseは、while文でも使われるので、しっかりと憶えておきましょう。
といっても、while文ではelseを使った書き方はあまりしないということも学習しました。

num = 1
while num < 3:
    print(num)
    num += 1
else:
    print('Finish!')

出力結果

1
2
Finish!

if文でbreakを使った条件を記載して、ループを抜ける場合は、else文は読み込まれずにループを終了しました。

これまでの酒井さんの講座を受講した限りでは、while文は、【while True:】と【break】を組み合わせて使うのが基本の使い方のような感じがしています。

それでは、本日の学習内容である【input関数】に入っていきます。

input関数

input関数はその名のとおり、値をインプットするための関数です。
input関数を使って、変数に値を入力させることが可能なので、対話型のプログラムには必要不可欠な関数です。

while True:
    word = input('enter word:')
    if word == 'ok'
        break
    print('Next')

出力結果

Python input関数の使い方

コードを実行すると、Consoleの画面には、’enter word:’と表示されて、入力を求められます。

‘ok’が入力されたときだけwhileループを抜けますが、それ以外の値が入力されたときは、’Next’を出力してから次のループに進みます。

変数定義はwhileの中へ

無限ループが大好きなわたし?!は、ここでもついつい無限ループにはまってしまいまいました。

書いたコードは次のとおり

word = input('enter word:')
while True:
    if word == 'ok'
        break
    print('Next')

これだと、入力する値が’ok’じゃない限り、永遠にNextが出力され続けます。

whileループの中にinput関数が入っていないので、breakでループを抜けない限り、変数wordに入力した値が入ったまま、その値を出力し続ける無限ループにハマるということですね。

また、inputで取得する値は、str型(文字列)なので、数字を入れても文字列として認識されます。

input関数で数値(int型)を取得する

input関数で数値(int型)を取得する場合は、取得した文字列をint型(整数型)に変換する必要があります。

while True:
    word = input('Enter number:')
    num = int(word)
    if num == 100:
        print('You got it!')
        break
    print('It\'s wrong')

出力結果

Python input関数の使い方

入力した値を整数型として認識して、条件を満たしているかどうかを判断するので、100以外の整数を入力したときは、’It’s wrong’を出力して、次のループに入り、100が入力されると、’You got it!が出力されてコードが終了します。

ただ、このコードだと文字列であるアルファベットなどが入力されたときは、エラーを返してしまいます。

Python input関数の使い方

なので、入力された値が数字以外のときは、別のアナウンスが出力されるコードを考えてみました。

文字列でもエラーを返さないコード

入力された値が数字以外のときは、’It’s not integer’と出力し、100以外の整数のときは、’It’s wrong’と出力して、次のループに入り、100が入力されたときに、’You got it!’と表示されるようなコードを考えてみました。

while True:
    number = input('Enter number:')
    if not str.isdigit(number):
        print('It\'s not integer')
        continue
    num = int(number)
    if num == 100:
        print('You got it!')
        break
    print('It\'s wrong')

出力結果

Python input関数の使い方

酒井さんの講座では、数字の入力での判定ができるコードの書き方は紹介していましたが、文字列が入力されたときのエラー回避方法は紹介されていませんでした。

そこで、文字列が入力されたらエラーを返すのではなく、条件分岐を入れたらいいんじゃない?と考えて、if文で次のような条件を入れてみるもなかなかうまくいかず。

if not type(num):
if type(number) == int:

書いているコードの意味がわからないまま、type()メソッドで判断すればなんとかなるんじゃないの?と思いつつ書いているので意味不明なコードになってしまっていますが、最終的にうまくいったのが、下記サイトで見つけた【str.isdigit()】でした。

【str.isdigit()】は、全ての文字が数字なら真、そうでなければ偽

という判定をするメソッドで、変数numberに入力された値がTrueではないときに、’It’s not integer’と出力して、次のループに移るcontinueでつないでみました。

プログラマーの方からすると、ほんと大したことないコードですが、これがうまく動作したときは、思わずニヤけながら、何度も100以外の数字や文字、小数や記号を入力して、ループを楽しんでしまいました。

できたときの満足度が高い

どのような講座でもあり得ることですが、講座を受講しただけとか、講座の内容をそのまま実行するだけでは、スキルは身につきません。

講座で実践している内容は、あくまで一例なので、それを元に、

これはどうだろう?
こうすればどうなる?

と考えて、いろいろと試してみるのが大切です。

試してみることで、さらにわからないことが出てきて、それをさらに調べるといったループにハマってしまうこともありますが、この過程を繰り返すことでメソッドの使い方や関数が記憶に刷り込まれていくわけです。

疑問に思ったことはどんどん追求していく癖をつけましょう!

それでは、明日もGood Python!