概要
娘(当時1歳半)との尊い会話のシミュレーターを、Pythonで再作成しました。
ExcelVBAバージョンはこちら。
コード
import random
words = ["ばなな", "もも", "すいか", "りんご", "ぱんだ",
"いぬ", "ねこ", "たこ", "いか", "なっとう"]
n = random.randint(1,6) #1-6でランダム
for i in range(n): #質問を最大6回繰り返す
nani = input("なーにーなーにー? >>")
if nani == "": #空白の場合、再度質問
continue
elif nani in words: #単語リストに存在する場合、応答
print(nani + "!")
else: #単語リストに存在しない場合
yesno = input("? (y/n)>>")
if yesno == "y": #yを押すと単語リストに追加
words.append(nani)
print(nani + "!") #単語リストに追加後、応答
実行結果(n=6)
なーにーなーにー? >>たこ
たこ!
なーにーなーにー? >>えび
? (y/n)>>y
えび!
なーにーなーにー? >>ひとで
? (y/n)>>n
なーにーなーにー? >>えび
えび!
なーにーなーにー? >>
なーにーなーにー? >>おしまい
? (y/n)>>y
おしまい!
※終了時のwords:
['ばなな', 'もも', 'すいか', 'りんご', 'ぱんだ', 'いぬ', 'ねこ', 'たこ', 'いか', 'なっとう', 'えび', 'おしまい']
まとめ
- リストとの照合・リストへの追加は、Pythonの方が圧倒的にラクでした。
- 変数を定義せずに、As Variantな感じで使えるのもラクです。
- やりとりがコマンドラインなので、VBAの時より見栄えはよくないです。VBAの見た目を再現するには、ウィンドウを表示するモジュール(tkinter)を追加する必要があるようです。
- 今回のプログラムは、一度終了すると単語リストも初期化されてしまいます。単語リストを別ファイルで保持して、初期化されないバージョンも作成してみたいと思いました。
- 娘は2歳半になり、覚えている単語はすでに相当な数になっているし、文章である程度会話もできます。子どもの成長は驚くべきスピードですね。