#python #文字入力 #キーボード #組み込み関数 #input
この記事では、pythonでキーボードから文字を入力する方法について、わかりやすく解説します。
本記事を読むにあたって
本記事を読むには、pythonに関してある程度の基礎知識が必要です。
下記の記事をご参照ください。
・ 【第4回】にっこちゃんを描いてやんわりと関数・モジュールを学ぶ(解説編)
本記事内のプログラムを実践するには、下記の記事に従って環境を準備してください。
・ 【第2回】pythonのプログラミング環境を作る
シンプルなキーボード入力
input関数はprint関数と同じように、何も インポート (import)しなくても使うことができます。
こういう関数を 組み込み関数 と呼びます。
早速、キーボードから入力した文字を表示させてみます。
<input.py>
inp = input()
print("入力 = '" + inp + "'")
結果は以下のとおりです。
“|”はかーソルで、カーソルが出るだけです。
が、
(base) PS D:\blog\input> python .\input.py
|
“はろー”を入力すると、その文字がそのまま表示されます。
(base) PS D:\blog\input> python .\input.py
はろー
入力 = 'はろー'
上記を見ると分かりますが、文字を入力するときに、どこに入力するかが分かりにくくなっています。
これは、 プロンプト を表示させることで解消できます。
では、プロンプトを表示させるようにしてみます。
プロンプトはinput関数の入力に指定するだけです。
<input.py>
inp = input("ここに入力してみて=>")
print("入力 = '" + inp + "'")
実行すると、下記のように最初に案内となるプロンプトが表示されます。
(base) PS D:\blog\input> python .\input.py
ここに入力してみて=>
できました!
input関数は、プロンプトに表示する文字列だけが、入力に指定できます。
ですので、input関数はたったこれだけでマスター完了です❗
えーーっ たったこれだけーー❓
分かりました。
もう一歩先にすすみましょう。
キーボード以外からの入力
実はinput関数は、厳密にはキーボードから文字列を入力をする関数ではなく、
標準入力 から文字列を入力をする関数なのです。
標準入力には、キーボードからの入力以外に、以下があります。
・ 別のプログラムからの入力
・ ファイルからの入力
別のプログラムの実行結果の入力
ここでは、別のプログラムの実行結果を入力する場合の実行例を示します。
別のプログラムをpythonで作成しても良いのですが、WindowsやLinuxのechoコマンドでもできますので、その例を示します。
また、ここでは、日本語文字を使用してみます。
日本語文字を扱う場合は、Windowsの Powershell Prompt ( Anaconda Powershell Promptも含む)は、予想外の問題(*1)にハマるため、Windows標準の コマンドプロンプト を使用して実行します。
(base) PS D:\blog\input> cmd ・・・コマンドプロンプトを起動
Microsoft Windows [Version 10.0.18362.959]
(c) 2019 Microsoft Corporation. All rights reserved.
D:\blog\input>echo あいう| python input.py ・・・プログラムを実行
ここに入力してみて=>入力 = 'あいう'
上記のとおり、Anaconda Powershell Promptから”cmd”コマンドを実行して、コマンドプロンプトを起動します。
その後、’echo “あいう”‘で日本語を入力し、” | python input.py” で、プログラムに引き渡しています。
上記のようにコマンド同士の間に”|”を記載すると、パイプという機能が働き、コマンドとコマンドの間でデータを受け渡しが行われます。
ファイルからの入力
今度は、ファイルから入力する場合の実行例を示します。
日本語文字を扱う場合は、”別のプログラムの実行結果の入力“と同じ問題にハマるため、Windows標準のコマンドプロンプトを使用して実行します。
また、メモ帳を起動して、”あいう”と入力し、 “text.txt” というファイルに保存しています。
(base) PS D:\blog\input> cmd ・・・コマンドプロンプトを起動
Microsoft Windows [Version 10.0.18362.959]
(c) 2019 Microsoft Corporation. All rights reserved.
notepad text.txt ・・・メモ帳を起動、"あいう"と入力して保存
D:\blog\input>type text.txt | python input.py ・・・プログラムを実行
ここに入力してみて=>入力 = 'あいう'
ファイルからの場合は、ファイルを作ったときに、単にWindowsのメモ帳から作って、特に”文字コード”を変更せずに保存した場合は、文字コードが shift-jis になっているため、問題なく実行できます。
入力した内容のチェック
キーボードから入力した文字列は、人が自由に入力しますので、何が入力されるかわかりません。
入力されるパターンは、大きく分けて、以下のケースがあります。
・ Enterキーだけが入力された場合
・ 文字とは言えない文字( 制御文字 )が入力された場合
・ 数字や英文字、漢字、かな等目的の文字以外の文字が入力された場合
これらの文字が入力された場合は、それに該当するかのチェックと、エラーなどの処理が必要となります。
これらについては、次回、別の記事で解説します。
キーボードのリアルタイム入力
今回の記事で説明したキーボード入力は、Enterが押されるまで入力を待つものでした。
しかし,ゲームやメモ帳・計算機などのようなリアルタイムでのキーボード入力は、別の方法で行なう必要があります。
これについては、次回、別の記事で解説します。
最後に
本記事ではinput関数によるキーボードからの入力について解説しました。
キーボードからEnterが入力されるまで待って文字を入力するだけであれば、以下さえ理解すれば可能でした。
- input関数を使う
- 入力案内をする プロンプト を表示する
しかし、同じプログラムを利用して、キーボードからだけでなく、以下の使い方ができることがご理解いただけたと思います。
- 他のプログラムからの入力
- ファイルからの入力
また、実際には、以下のような課題が有ることもご理解いただけたかと思います。
- 日本語を使った場合の文字化けの問題
- 入力文字のチェックとエラーなどの処理
- リアルタイムのキーボード入力は別の方法で行なうことが必要
上記の課題についても、別記事で解説しますので、ご期待ください!
この記事へのお問い合わせや、無料のサポート、一歩踏み込んだ有料サポートが必要な場合は、ホームページからメールで受け付けています。お気軽にご連絡ください。
コメント