見出し画像

Pythonで超簡単Botを作ろう!

今回は、プログラミング言語"Python"で、超簡単なBotを作っていきたいと思います。

大前提

この記事ではプログラミング"初心者の方にも分かり易く"を心掛けておりますが、最低限のPythonの知識を持っていることは前提とさせていただきます。

Botって何?

Botという言葉には様々な定義があると思いますが、ここでは

何か言葉を入力すると自動で言葉を返してくれるプログラム

という認識でオーケーです。

Botを動かしている様子

完成したBotのイメージは次のような感じです。

画像1

つくろー!

では作っていきましょう!

まず、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)

一度これで実行してみましょう。

画像2

「こんにちは」と「ありがとう」に対しては正常に動作していますね。

しかし、「あああああ」のような意味不明な文字列に対しては無反応です。

なので、登録されていない文字列に対しては「ナニイッテルカワカリマセン」と返答するようにしましょう。

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^)丿

この記事が気に入ったらサポートをしてみませんか?