こんにちは!
はるさらと申します。
今回は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の練習としてでも
役立てていただければ幸いです!!
それではまたー!!