- キーボード入力の読み込み
- 区切り文字列
- 文字列の連結
対話的に実行するプログラムってどう書くのかなぁ、、、
キーボードの入力を読み込ませたいんだけど。
この記事では、そんな悩みをもつPythonを学習する人のために「キーボード入力の読み込み」 を4パターン解説していきます。
文字表示と同じく、文字列の読み込みは、どのプログラミング言語でも基本中のキホンですので、しっかり覚えておきたいところです。
それでは、さっそくはじめていきましょう!
Pythonインストールがまだの人はコチラ
キーボード読込み①:『input関数』を使ってみよう
キーボードで入力された文字列を読み込むには、input関数を使います。実際に、かんたんなプログラムを作って確認してみましょう。
inputという関数を使うのね!よーし、やるわよー!
次のようにソースコード書いて、プログラムを実行してください。
# 名前を読み込んで表示させる print('あなたの名前は?:', end='') name = input() print('こんにちは', name, 'さん。')
・end=”は、print関数の学習で登場した、改行せずに表示する書きかたです
『あなたの名前は?:』と表示されるので、名前を入力してEnterキーを押してください。
実行結果はこのようになります。(ここでは、ヤクモ と入力しました)
あなたの名前は?:ヤクモ こんにちは ヤクモ さん。
解説
input関数は、読み込んだ文字列を返却します。input()という式が、キーボードから読み込んだ文字列そのものになるイメージです。
ソースコードと見くらべながら、プログラムの流れをみてみましょう。
今回のプログラムの流れ
①print関数で「あなたの名前は?:」と表示させる
②式input()が、読み込んだ文字列 ‘ヤクモ’ そのものになる
③式input()が、変数nameに代入される
(変数nameの中身が、’ヤクモ’ という文字列になる)
④print関数の第2引数に、変数nameを与える
このようなステップをふんで、最終的に「こんにちは ヤクモ さん。」を表示されています。
C言語などは、変数の型を指定してから代入しなければなりませんが、Pythonは型を自動決定してくれます。ここでは、変数nameが文字列型(str型)になっていることも覚えておきましょう。
キーボード読込み②:プログラムをシンプルに書こう
input関数は、もっと簡潔に使うことができますよ。
input関数には、実引数として文字列を与えられます。そうすると、さきほどのプログラムをすっきり書くことができます。
次のようにソースコード書いて、プログラムを実行してください。
# 名前を読み込んで表示させる name = input('あなたの名前は?:') print('こんにちは', name, 'さん。')
『あなたの名前は?:』と表示されるので、名前を入力してEnterキーを押してください。
さきほどと同じように、実行結果はこのようになります。(ここでは、ヤクモ と入力しました)
あなたの名前は?:ヤクモ こんにちは ヤクモ さん。
解説
見やすくていいわ。input関数って万能なのね ♪
もともと2行だったプログラムが、1行になってシンプルになりました。input( ‘表示文字列’ ) と書くことで、input関数を使って文字列を表示させることができます。
input( ‘表示文字列’ ) の動き
①input関数に与えた実引数、『あなたの名前は?:』が表示される
②式input()が、読み込んだ文字列 ‘ヤクモ’ そのものになる
③式input()が、変数nameに代入される
(変数nameの中身が、’ヤクモ’ という文字列になる)
④print関数の第2引数に、変数nameを与える
式input(‘あなたの名前は?:’)は、文字列 ‘ヤクモ’ に変わり、変数nameに代入されるといった流れになります。
ところで、input関数のあと改行するのはなぜ?
input関数は、エンターキーまでの内容を読み込んで改行します。
そして、返却する文字列は改行しないことも特長です。
キーボード読込み③:スペースを詰めて表示させよう1
変数nameが表示されたときの両端のスペースが気になるわね。。。
そんなときは、sepを使うといいですよ。
次のようにソースコード書いて、プログラムを実行してください。
# 名前を読み込んで表示させる name = input('あなたの名前は?:') print('こんにちは', name, 'さん。', sep='')
『あなたの名前は?:』と表示されるので、名前を入力してEnterキーを押してください。
実行結果は、このようにスペースがなくなるはずです。(ここでは、ヤクモ と入力しました)
あなたの名前は?:ヤクモ こんにちはヤクモさん。
解説
print関数の第4引数に与えた sep=” は、「表示の区切り文字列となるsepを、スペースではなく空文字列 ‘ ‘ に変更してください」という意味になります。
なるほど。指定しないとスペースが表示されてしまうわけね!
そうです、空文字列のほかにも指定できますよ。
たとえば次のようにソースコードを修正してみてください。
# 名前を読み込んで表示させる name = input('あなたの名前は?:') print('こんにちは', name, 'さん。', sep='-')
sep=’-‘ と実引数を与えることで、『こんにちは-ヤクモ-さん。』と表示することができたわ ♪
あなたの名前は?:ヤクモ こんにちは-ヤクモ-さん。
キーボード読込み④:スペースを詰めて表示させよう2
sepを使わずに、スペースを詰めて表示する方法も紹介します
次のようにソースコード書いて、プログラムを実行してください。
# 名前を読み込んで表示させる name = input('あなたの名前は?:') print('こんにちは' + name + 'さん。')
『あなたの名前は?:』と表示されるので、名前を入力してEnterキーを押してください。
実行結果は、このようにスペースがなくなるはずです。(ここでは、ヤクモ と入力しました)
あなたの名前は?:ヤクモ こんにちはヤクモさん。
解説
文字列 + 文字列 と演算させると、左から連結した文字列を得ることができます。今回のような、文字列と変数の組み合わせでも、次のように文字列だけの組み合わせもできます。
# 文字列だけを連結させて表示させる print('ヤ'+'ク'+'モ'+'で'+'す')
まとめ
input関数が使えるようになると、好きな値に変化させたり、対話をしてるようなプログラムを書くことができるようになります。
作れるプログラムの幅も広がるので、しっかり覚えておきましょう!
学習内容のまとめ
- input関数は、読み込んだ文字列を返却する
- input関数には、実引数として文字列を与えらる
- print関数に、区切り文字列sep=”を引数にするとスペースが消える
- 文字列 + 文字列 と演算させるとスペースが消える
- Pythonは型を自動決定する
今回は以上です、それではまた!
ー くらしと仕事をワンランク上に ー
以上、YAKUMO(@yakumostyle)でした。
コメント