python(コンソール上でしりとり♪)

IT備忘録

こんにちは!
はるさらと申します。

今回はPythonの練習がてら
「コンソール上で行うしりとり」
作成してみました。

 

使用する方がいるかは分かりませんが・・・
どなたかの参考になれば幸いです!

 

開発環境

PyCharm を使用しております。
コピペしていただければ
同じ挙動が出来るように作成しております。

他のPythonの記事はこちらから参照できます♪

今回の目標

しりとりです。
単語を繋げて行って、
最後に「ん」がついたら
プログラム終了となります。

入力された単語はDBへ登録していき
最後に履歴として表示されるように
実装していきます。

コーディング

import sqlite3
count = 0
start ='しりとり'
print("「しりとり」の「り」からスタート")

# テーブルの作成
con = sqlite3.connect(":memory:")
c = con.cursor()

create_table = '''create table shiritori (id int, word varchar(64))'''
c.execute(create_table)

# データの追加
def insert(no,word):
    sql = 'insert into shiritori (id, word) values (?,?)'
    user = (no, word)
    c.execute(sql, user)

while True:
    word = input("ひらがなの単語を入力して下さい: ")
    if start[-1:] != word[:1]:
        print('前の単語の最後の文字から始めてください。')
    elif word[-1:] == 'ん':
        print('最後に「ん」が付きました。ゲーム終了')
        insert(count + 1,word)
        for a in c.execute("select * from shiritori"):
            print(a)
        break
    else:
        count += 1
        start = word
        insert(count,word)
        print('「' + word + '」→')

con.close()

処理の解説

【1~4行目】
1行目ではDB機能を使用するために、
sqlite3をインポートしています。

2行目のcountは、DBに登録する項目で
3行目はしりとりの初めの単語の設定になります。

 

【7~11行目】
DBへの接続設定を行っています。
詳しい内容については下記記事を覗いてください。
https://harusara22.work/python-db-sqlite/

 

【14~17行目】
テーブルに登録するための関数になります。

何回目の言葉なのかと、単語をもってここに飛んでくることで
insert文が走り、テーブルに登録されます。

 

【19~33行目】
こちらがメインのしりとりのロジックになります。

処理の手順は
1.コンソール上で単語を入力させる。

2.前回の単語の最後の文字と一致しているかを比較
一致していなかった場合、1へ戻る。

3.最後の文字が「ん」ではないかを確認。
「ん」だった場合、 DBへの登録処理を行った後
DBの中身をすべて表示させ、ループから抜ける。

4. 2,3で引っかからなかった場合DBへ登録し、1へ戻る。

 

これらの処理をゲームが終了するまでwhile文でループします。

 

今日はここまで

DBに登録する際のIDは自動採番させたり、
同じ単語が入力されてもOUT
などの処理も入れたかったのですが
一旦ここまでとします。

機会があれば、更新するかもしれません!!

使う方がいらっしゃるかは分かりませんが・・・

Pythonの練習としてでも
役立てていただければ幸いです!!

それではまたー!!