Pythonのinput関数ってどう使うの?
プログラミングを始めたばかりだと、ユーザーに文字や数字を入れてもらう方法って、意外と迷うポイントですよね。
この記事を読めば、`input()`関数の基本的な使い方から、初心者がつまずきやすい「型変換」、そしてよくあるエラーの対処法まで、しっかり理解できるようになりますよ。
コンピューターと会話するみたいで、プログラミングがもっと面白くなるはず!さあ、一緒に`input()`関数をマスターして、一歩進んだプログラム作りに挑戦しましょう!
この記事で学べること
- `input()`関数の基本的な役割と書き方
- ユーザーに入力してもらった値の扱い方
- 入力された文字を数字(整数や小数)に変える方法
- `input()`関数でよく起きるエラーとその対策
- 入力を促すメッセージの表示方法
Pythonのinput関数とは?プログラムと対話する第一歩
Pythonの`input()`関数は、プログラムを実行している人に、キーボードから何か文字を入力してもらうための命令です。
ゲームで名前を入力したり、計算機プログラムで数字を入力してもらったりする場面を想像してみてください。プログラムがただ動くだけでなく、使う人とコミュニケーションを取るために、`input()`関数は欠かせない存在なのです。
例を挙げると、ユーザーが自分の名前を入力したら、プログラムが「こんにちは、〇〇さん!」と挨拶を返す、そんな対話型のプログラムを作る基礎になります。
まさに、プログラムと人がキャッチボールをするための第一歩、とイメージすると分かりやすいかもしれませんね。
input関数の基本的な書き方
さて、早速`input()`関数の基本的な使い方を見ていきましょう。一番シンプルな形は、`input()`と書くだけ。
実際にコードを書くときは、ユーザーが入力した値を受け取るための「変数」という箱を用意して、`変数名 = input()`のように書きます。
# ユーザーからの入力を受け取り、変数 name に入れる name = input() print(name)
上記のコードを実行すると、プログラムは`input()`の行で一時停止し、ターミナル(黒い画面みたいなもの)でカーソルが点滅して、ユーザーが何か入力してEnterキーを押すのを待ちます。
入力された文字は、`name`という変数の中に文字列として保存され、次の`print(name)`で画面に表示されます。
シンプルだけど、プログラムが外部からの情報を受け取る、とても画期的な機能なんです!
簡単なサンプルプログラムでPythonのinput関数を体験
理屈だけじゃなく、実際に動かして体験してみるのが一番!ユーザーに名前を入力してもらって、挨拶を返すプログラムを書いてみましょう。
下のコードをコピーして、お手元のPython環境で実行してみてください。
# ユーザーに名前の入力を促すメッセージを表示 print("お名前を教えてください!") # input() でユーザーの入力を受け取り、変数 user_name に保存する user_name = input() # ここで入力待ちになります # 受け取った名前を使って挨拶を表示 print("こんにちは、" + user_name + "さん!")
これを実行すると、まず「お名前を教えてください!」と表示され、次に入力を求められます。例えば「たろう」と入力してEnterキーを押すと、次のように表示されるはず。
お名前を教えてください! たろう こんにちは、たろうさん!
どうでしょう?プログラムと対話してる感じがしませんか?入力された値(ここでは「たろう」)が`user_name`という変数に入り、次の`print`文で使われているのがポイントです。
【ここがポイント】input関数の戻り値は必ず文字列(str型)
ここからが`input()`関数を使いこなす上で、めちゃくちゃ大事な話です!
ユーザーが`input()`に対してたとえ数字の「123」を入力したとしても、Pythonプログラムの中では、それは数字ではなく「文字」として扱われます。プログラミングの世界では、文字のデータの種類を「文字列型(str型)」と呼びます。
「え、数字を入力したのに文字なの?」と思いますよね。実際に`type()`という、データの種類を調べる命令を使って確認してみましょう。
my_input = input("何か入力してください(例: 123): ") print("入力された値:", my_input) print("データの型:", type(my_input))
実行して、例えば `123` と入力すると、結果はこうなります。
何か入力してください(例: 123): 123 入力された値: 123 データの型: <class 'str'>
ほら!`type(my_input)`の結果が `
これがなぜ問題になるかというと、文字列のままでは足し算や引き算などの「計算」ができないからです。
例えば、'123' + 1 のような計算はエラーになってしまいます。ユーザーに年齢や個数などを入力してもらって計算したい場合には、ひと手間加える必要が出てきます。
input関数で受け取った文字列を整数(int型)に変換する方法
ユーザーに入力してもらった「文字としての数字」を、計算に使える「本当の数字(整数)」に変えるにはどうすればいいでしょうか?
そのために用意されているのが`int()`という命令です。`int()`は、数字として解釈できる文字列を、整数型(integer型)のデータに変換してくれます。
例えば、ユーザーに年齢を入力してもらい、その年齢に1を足して来年の年齢を表示したい場合、次のように書きます。
age_str = input("あなたの年齢を入力してください: ") # 文字列(str)から整数(int)へ変換! age_num = int(age_str) # 整数になったので計算できる next_age = age_num + 1 print("来年は", next_age, "歳ですね!")
ポイントは`age_num = int(age_str)`の部分です。`input()`で受け取った文字列`age_str`を`int()`に通すことで、計算可能な整数`age_num`に変換しています。
これで、`age_num + 1`という計算が正しく行えるようになります。
整数入力を使ったサンプルプログラム
では、実際に年齢を入力させて、来年の年齢を表示するプログラムを動かしてみましょう。
# 年齢を入力してもらう (まだ文字列) age_str = input("あなたの年齢を教えてください: ") # print("入力された文字:", age_str) # デバッグ用: 型変換前の値を確認 # print("型変換前のデータ型:", type(age_str)) # デバッグ用: 型を確認 # 文字列を整数に変換する age_num = int(age_str) # print("型変換後の数値:", age_num) # デバッグ用: 型変換後の値を確認 # print("型変換後のデータ型:", type(age_num)) # デバッグ用: 型を確認 # 来年の年齢を計算する next_age = age_num + 1 # 結果を表示する print("ふむふむ、では来年は", next_age, "歳ですね!")
これを実行して、例えば `30` と入力すると、結果はこうなります。
あなたの年齢を教えてください: 30 ふむふむ、では来年は 31 歳ですね!
もし`int(age_str)`の部分がないと、`age_str + 1`という計算はエラーになってしまいます。数字を扱いたい場合は`int()`での変換が必要、と覚えておきましょう!
コメントアウト(`#`で始まる行)している`print`文の`#`を外して実行すると、型変換の前後でデータ型が変わる様子がよく分かりますよ。
input関数で受け取った文字列を小数(float型)に変換する方法
年齢のようにキリの良い数字だけでなく、身長や体重、温度のように小数点を含む数値を扱いたい場合もありますよね。そんなときは、`int()`の代わりに`float()`という命令を使います。
`float()`は、文字列を「浮動小数点数型(float型)」という種類の数値データに変換します。浮動小数点数というのは、簡単に言うと小数点が使える数値のことです。
例えば、ユーザーに身長(cm)を入力してもらい、それをメートル(m)に直して表示したい場合、次のように書きます。
height_cm_str = input("あなたの身長(cm)を入力してください: ") # 文字列(str)から浮動小数点数(float)へ変換! height_cm_float = float(height_cm_str) # メートルに換算 (1m = 100cm) height_m = height_cm_float / 100 print("あなたの身長は", height_m, "mですね!")
ここでのポイントは`height_cm_float = float(height_cm_str)`の部分。`input()`で受け取った文字列を`float()`に通すことで、`170.5`のような小数点を含む数値として扱えるようになります。これで、`/ 100`のような割り算も正しく計算できますね。
小数入力を使ったサンプルプログラム
身長をセンチメートルで入力させ、メートルに換算して表示するプログラムです。
# 身長(cm)を入力してもらう (まだ文字列) height_cm_str = input("身長は何cmですか? 例: 170.5 のように入力してください: ") # 文字列を浮動小数点数(float)に変換する height_cm_float = float(height_cm_str) # メートルに換算する (cm ÷ 100 = m) height_m = height_cm_float / 100 # 結果を表示する (f-stringを使うと表示が少し楽になります) print(f"なるほど、あなたの身長は {height_m}m なのですね!")
これを実行して、例えば `165.8` と入力すると、結果はこうなります。
身長は何cmですか? 例: 170.5 のように入力してください: 165.8 なるほど、あなたの身長は 1.658m なのですね!
最後の`print`文で使っている `f"..."` という書き方は「f-string」といって、文字列の中に変数の中身を埋め込むのに便利な書き方です(`{}`の中に変数名を書く)。
小数点を含む可能性のある数値を扱いたい場合は`float()`での変換が必要、と覚えておきましょう。
input関数でよくあるエラー
さて、`int()`や`float()`を使って便利に型変換ができるようになりましたが、ここで注意点があります。
もし、`int()`で整数に変換しようとした時に、ユーザーが「abc」とか「じゅう」みたいな、どう見ても数字じゃない文字を入力したらどうなるでしょう?あるいは、`float()`で小数に変換したいのに「160cm」みたいに単位まで入力してしまったら?
Pythonさんは「そんなの数字にできないよ!」と怒って、プログラムを止めてしまいます。その時に表示されるエラーが`ValueError`です。
例として、`int()`で変換しようとして数字以外が入力された場合のコードを見てみましょう。
num_str = input("数字を入力してください: ") num_int = int(num_str) # ここでエラーが起きる可能性がある print("入力された数字は", num_int, "です。")
これを実行して、例えば `abc` と入力すると、こんなエラーメッセージが表示されます。
数字を入力してください: abc Traceback (most recent call last): File "test.py", line 2, in <module> num_int = int(num_str) ValueError: invalid literal for int() with base 10: 'abc'
`ValueError: invalid literal for int() with base 10: 'abc'` という部分が、「'abc'っていう文字は、10進数の整数には変換できないよ!」という意味です。
ユーザーはいつだって、プログラムが想定していない入力をする可能性があります。全角で数字を入力したり、うっかり文字を混ぜてしまったり…。
なので、`ValueError`が起きてもプログラムが止まらないように、対策をしておくのがおすすめです。
ValueErrorを防ぐための基本的な対処法(tryexcept文)
ユーザーが数字以外を入力しても、プログラムがいきなり止まってしまうのは避けたいですよね。
そんな時に使えるのが`try-except`文という仕組みです。「とりあえず`try`(試して)してみて、もし`ValueError`というエラーが出たら、代わりに`except`(例外処理)の方を実行してね」という命令を書くことができます。
先ほどのコードを`try-except`を使って書き直してみましょう。
num_str = input("数字を入力してください: ") try: # まずは整数への変換を試みる num_int = int(num_str) print("入力された数字は", num_int, "です。") except ValueError: # ↑もし try の中で ValueError が発生したら、こっちを実行 print("おっと!数字以外が入力されたみたいです。") print("プログラムは終了せずにここまで来ました。") # エラーが出てもここは実行される
これを実行して `abc` と入力してみると…
数字を入力してください: abc おっと!数字以外が入力されたみたいです。 プログラムは終了せずにここまで来ました。
今度はエラーでプログラムが止まらず、「おっと!数字以外が入力されたみたいです。」というメッセージが表示され、その後の処理も実行されましたね!
`try`ブロックの中にエラーが起きる可能性のある処理(ここでは`int()`)を書き、`except ValueError:`の後ろにエラーが起きた場合の処理を書く。
これが`ValueError`への基本的な備え方です。より親切なプログラムにするには、エラーが出たら再度入力を促す、といった処理を入れることもできます。
【もっと便利に】input関数でプロンプトメッセージを表示する
これまでも例の中で自然に使ってきましたが、`input()`関数は、ユーザーに何を入力してほしいのかを伝えるメッセージ(プロンプトメッセージ)を表示する機能も持っています。
`input()`のカッコの中に、表示したいメッセージを文字列として入れてあげるだけです。
# 引数なしの場合 (何を入力すればいいか分かりにくい) # print("名前を入力してください:") # name = input() # 引数ありの場合 (メッセージが表示されるので分かりやすい) name = input("あなたのお名前は何ですか? ") print("こんにちは、" + name + "さん!") age = input("年齢を教えていただけますか? ") print(age + "歳なんですね!")
実行すると、`input()`が実行される際にカッコの中のメッセージが先に表示され、その隣に入力待ちのカーソルが出ます。
あなたのお名前は何ですか? 太郎 こんにちは、太郎さん! 年齢を教えていただけますか? 25 25歳なんですね!
ユーザーにとっては、何を入力すれば良いか一目瞭然なので、プログラムが格段に使いやすくなります。特別な理由がない限りは、`input()`には分かりやすいプロンプトメッセージを入れてあげるのが親切でしょう。
Pythonのinput関数を使う上での注意点
`input()`関数はとても便利ですが、使う上で少しだけ気をつけておきたい点をまとめておきましょう。
- 戻り値は常に文字列(str)!
計算に使いたい場合は、必ず`int()`や`float()`で数値型に変換しましょう。 - ユーザーは想定外の入力をするかも!
特に`int()`や`float()`で変換する前には、数字以外の文字が入力される可能性を考慮して、`try-except`文でエラー処理をしておくとプログラムが親切になります。 - 全角数字に注意!
ユーザーが`123`のように全角で数字を入力した場合も、そのままでは`int()`や`float()`でエラーになります。(全角を半角に変換する処理を追加するなどの対策が考えられますが、まずはエラーになることを知っておきましょう)
これらの点を頭の片隅に置いておけば、`input()`関数をより安心して使えるようになるはずです。
【まとめ】Pythonのinput関数をマスターして対話型プログラムを作ろう
お疲れ様でした!この記事では、Pythonの`input()`関数について、基本的な使い方から、ちょっとハマりやすい型変換の話、そして`ValueError`への対処法まで、一通り見てきました。
今回のポイントを振り返ってみましょう。
- `input()`はユーザーからのキーボード入力を受け取る命令
- `input()`で受け取った値は、たとえ数字でも必ず文字列(str)になる
- 計算などで数値として扱いたい場合は`int()`や`float()`で変換する
- 数字以外が入力されると`ValueError`が起きるので`try-except`で備えると良い
- `input("メッセージ")`のように書くと、ユーザーに入力を促せる
これで皆さんも、`input()`関数を使ってユーザーと対話するプログラムが作れるようになりましたね!
最初は何を作ればいいか迷うかもしれませんが、まずは簡単な自己紹介プログラムや、二つの数字を入力させて足し算するだけの簡単な計算機などから作ってみるのがおすすめです。
【関連記事】 「Pythonとは?」に答える最初の一歩
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。