受講生F氏からまたユニークなお題が届いた。つっこみどころ満載のしりとりゲームをコーディングしてみよう!
問題
ルール
・最後に[ん]がついたら負け
・同じ言葉を2回行ったら負け
・最初の文字が違ったら負け
実行例
実行例1
しりとりスタート!
しりとり
1ターン目です。
[り]ではじまるひらがなを入れてください: あし
最初の文字が間違っています。あなたの負けです。
実行例2
しりとりスタート!
しりとり
1ターン目です。
[り]ではじまるひらがなを入れてください: りけん
これは[ん]で終わる単語です。あなたの負けです。
実行例3
しりとりスタート!
しりとり
1ターン目です。
[り]ではじまるひらがなを入れてください: りんご
2ターン目です。
[ご]ではじまるひらがなを入れてください: ごりら
3ターン目です。
[ら]ではじまるひらがなを入れてください: らっぱ
4ターン目です。
[ぱ]ではじまるひらがなを入れてください: ぱり
5ターン目です。
[り]ではじまるひらがなを入れてください: りんご
この単語は既に使われています。あなたの負けです。
Let’s challenge!
とてもざっくりとした設定なので逆に戸惑う。最初は「り」からスタートで決まりなのか?もし、「きしゃ」のように最後が小さいひらがなで終わったら?複数のエラーが同時に発生したらどのように表示するのか?そもそも、その言葉が本当に存在するかという部分をどうするのか・・・。
この問題はそういった細かいことを気にしてはいけない。実行例通りに表示されればよいだろう。つまり
○最初は「り」から
○小さい平仮名は最後にこない
○複数のエラーがあった場合はどれか一つ表示すればOK
○その言葉が本当に存在してるかは不問
この前提のもとでコーディングしてみよう!
解答例
words=[]
turn=0
first='り'
print('しりとりスタート!\nしりとり')
while True:
turn+=1
print(f'{turn}ターン目です。')
word=input(f'[{first}]ではじまるひらがなを入れてください:')
err=(
'これは[ん]で終わる単語です。' if word[-1]=='ん' else
'最初の文字が間違っています。' if word[0] != first else
'この単語は既に使われています。' if word in words else
''
)
if err:
print(err+'あなたの負けです')
break
words.append(word)
first=word[-1]
コメント