Pythonで超簡単Botを作ろう!
今回は、プログラミング言語"Python"で、超簡単なBotを作っていきたいと思います。
大前提
この記事ではプログラミング"初心者の方にも分かり易く"を心掛けておりますが、最低限のPythonの知識を持っていることは前提とさせていただきます。
Botって何?
Botという言葉には様々な定義があると思いますが、ここでは
「何か言葉を入力すると自動で言葉を返してくれるプログラム」
という認識でオーケーです。
Botを動かしている様子
完成したBotのイメージは次のような感じです。
つくろー!
では作っていきましょう!
まず、Botというのは常にご主人様の入力を待っています。
そして入力されると勝手に、Botが文字を出力します。
つまり、
入力 ⇒ 出力 ⇒ 入力 ⇒ 出力 ...と繰り返します。
繰り返しということは...for文かwhile文だ!
ということが分かりますが、Botの場合繰り返す回数に制限はないので、while文を使います。
while
whileの後にはif文を書くことが一般的ですが、Botの場合"無条件で"入力待ち状態になるので、whileの後にTrueを書きましょう。
while True:
Pythonなので ":" を忘れずに。
次に、入力した文字をBotに受け取らせる処理を書きます。
文字の入力待ち状態にする関数は、input()です。
入力する文字は一般的にコマンドと呼ぶので、"command"という変数に入れることにしましょう。
while True:
command = input()
input()の引数に文字列を持たせると、入力待ちの時にその文字列が表示されます。
せっかくなのでPyBot> という文字列を表示させましょう。
while True:
command = input('PyBot> ')
Botの出力を入れる変数"response"も用意しておきましょう。
while True:
command = input('PyBot> ')
response = ''
次に、
「もし入力した文字列の中に~が含まれていれば~を表示する」
という処理を書きます。
今回は
こんにちは ⇒ コンニチハ
ありがとう ⇒ アリガトウ
の2つの言葉を認識するBotにします。
ここで、「もし~」という処理なのでif文を使う事が分かります。
そして文字列の中に文字列が含まれているかどうかを判定するin演算子を使います。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command: #もしcommandの中に「こんにちは」という文字列が入っていたら
コマンドに「こんにちは」が入っていたら「コンニチハ」と返事をするので、その処理を書きます。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command:
response = "コンニチハ"
同じように「ありがとう」に対して返答する処理も書きます。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command:
response = "コンニチハ"
if "ありがとう" in command:
response = "アリガトウ"
そしてresponseをprint()関数で表示させます。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command:
response = "コンニチハ"
if "ありがとう" in command:
response = "アリガトウ"
print(response)
一度これで実行してみましょう。
「こんにちは」と「ありがとう」に対しては正常に動作していますね。
しかし、「あああああ」のような意味不明な文字列に対しては無反応です。
なので、登録されていない文字列に対しては「ナニイッテルカワカリマセン」と返答するようにしましょう。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command:
response = "コンニチハ"
if "ありがとう" in command:
response = "アリガトウ"
if not response: #もしresponseが空白ならば
response = "ナニイッテルカワカリマセン"
print(response)
notは、後に続く文字列が空白の時に「True」を返します。
これでほぼ完成なのですが、どうせなら「さようなら」と入力するとプログラムが終了するという、ちょっとだけ洒落たことしてみましょう。
while True:
command = input('PyBot> ')
response = ''
if "こんにちは" in command:
response = "コンニチハ"
if "ありがとう" in command:
response = "アリガトウ"
if not response:
response = "ナニイッテルカワカリマセン"
if "さようなら" in command:
break #while文を抜ける
print(response)
これで完成です!お疲れ様でした!
さいごに
いかがだったでしょうか。
今回作った「PyBot」は、当然のことながらまだまだ無限に改良の余地があります。
是非このPyBotを、あなた好みのBotに成長させていって欲しいと思います。
もしこの記事の評判が良ければ、このPyBotを改良する記事も作ろうかと思っています。
ハートマークを付けて頂けるとすごく喜ぶし励みになります。
ではまたヽ(^o^)丿
この記事が気に入ったらサポートをしてみませんか?