Mainはほぼ変更なし。msg.putの使い方分からず。石の山を3個にしました。25行目から27行目は、デバッグで一行から変更。一行でOKです。24行目Whileの条件も変わります。
def evalは乱数を使って取る山と数を合うまで繰り返します。乱数の範囲指定が間違っていて、暫く悩んでました。勝つための演算はネタ本にはありましたが、省略。
勝つための演算は省略してますので、勝てるチャンスはあります。最後に取ったほうが勝ちか、負けはMainの29行目だと思います。
追記)
コードをWPに貼り付けてみました。