2019.11.06この記事は約13分で読めます。前回のおさらいさて、前回は延長戦第1回となる、ドロー5枚で手役の発生確率計算でした。確率計算自体は本体シリーズでも作成したものでしたので、特段難しくはなかったかと思います。実際の手役の発生確率50万回で試走させても、なかなかロイヤルストレートフラッシュは出ないという事実と、いわゆる確率論における組み合わせ確率と近似してくることが確認できたかと思います。python練習問題〜シリーズ1第5回、レベル超初級の初級5〜python3練習問題、ポーカの手役判定ロジックをpythonの練習題材にしています。5枚で50万回施行して、確率論にどの程度近似するのか試してみました。仮想プレーヤーと対戦してみよう本来今回はリファクタリングの説明をしようかと思っていましたが、もう少しコードを汚してからリファクタリングした方が効果が感じやすいと思うので、今回は第7回想定でした仮想プレーヤーとの対戦を実施していきます。完全な対戦ではなく、少しトラップ残りです(トラップの内容は最後に説明します)ゴールを確認しよう(実行結果の表示)実行結果さて、対戦なので、player1とplayer2に手札を5枚ずつ配って、それぞれの手役の強さを判断してどっちが勝ったかを表示していきます。check_roll(hand2).keys())変化点を中心に少しずつ解説をしていこうと思います。classを作成しよう対戦するということはplayerが少なくとも2人必要になりますね。class(非常に簡単なものですが)を作成していきます。__init__はいつもの通りのおまじないです。呼び出し時にハンドを引数で渡して、そのハンドをいつものcheck_roll関数で手役ランクを判定していきます。この後、説明追加していますが、check_roll関数の戻り値には{key->手役名:values->手役ランク}を設定しています。そのvaluesを取得して、大小比較できるようにするため、list化しています。1}さて、大きく変化はしていないのですが、それぞれ判定後の戻り値を変更しています。手役ランク}で返すようにしています。これは、この後説明するbattle関数で手役ランクの大小でどちらが勝っているのか判断するためです。"draw"先ほど、手役にランクを付けましたので、その手役ランクをclass呼び出し時に各playerに付与して大小を比較しています。シンプルな大小比較なので、これについては説明不要かと思います。**kwargsを入れています。pythonの関数やクラス設定ではよく使う2つのkeywordなので、入れる癖がついてしまっていますが、使わなくても処理できることも多いですね。print(result)プレーヤー2人分のドローを作成しているのが、handとhand2です。交互に配る設定にはせず、プレーヤー1が1〜5枚目まで、プレーヤー2が6〜10枚目までをドローする設定で作成しています。listの使い方を変更すれば、交互ドローとかも可能ですね。交互ドローの場合は以下でしょうか。bill[1:11:2]そして、プレーヤーのハンドの強さをclassからそのまま呼び出している部分が以下ですね。classにそれぞれのhandを渡して初期化、そして、hand_result()関数を呼び出して、手役ランクをlist形式で取得します。まとめやっと勝負ができました。コードが100行をこえ、だいぶ汚くなってきましたね。実際何度か試していると、以下のような結果を生じさせます。うん、同じ手役だからドローだよね。ないですよね?ポーカーの場合、同じ手役でも、カードの大小で勝ち負けを判断しますよね(公式ルールベース)。非公式だと最大値が同じでも、スーツベース(マークベース)で判断する場合まであります。いうことは、現状ではまだ不足している、ドローのケースで、カードの最大値を比較して判断に組み入れるロジックを次回は作っていきましょう。そこまで行くと、コードが本当に汚いままになるので、その後リファクタリングをしていければと思います。どこまでこのシリーズやるんだというクレームはおいておいて、pythonポーカを楽しんでいきましょう。はてブ0ks_Accountingをフォローするks_Accounting経営管理deプログラミング関連記事Pythonpython練習問題〜シリーズ1第2回、レベル超初級の初級2〜python3練習問題、ポーカの手役判定ロジックをpythonの練習題材にしています。カード4枚だけなので、非常に簡単なコードでできますが、関数内での関数呼び出しの方法が出てきます。Pythonpython超初級を脱出したい!4〜decoratorの理解を深める〜pythonで超初級を脱出するため、基本的理解を深めることを目的とした記事です。今回はdecoratorです。decoratorとは何か、そしてどのように利用していくのかを解説していきます。Pythonpython超初級を脱出したい!5〜特殊メソッド・特殊属性に慣れる〜pythonで超初級を脱出するため、基本的理解を深めることを目的とした記事です。今回は特殊メソッドです。見る__init__以外にも多くの特殊メソッドが存在します。全てを把握することは慣れが必要ですが、よく使うものからみていきます。Pythonpython練習問題〜シリーズ1第5回、レベル超初級の初級5〜python3練習問題、ポーカの手役判定ロジックをpythonの練習題材にしています。5枚で50万回施行して、確率論にどの程度近似するのか試してみました。PythonPython認定試験なるものを受けてみた〜受験感想記〜python認定試験というものを受けてみたので、その感想記です。試験の意味については、厳し目のことを言っています。受ける受けないの判断をする際の参考材料にでもしてもらえれば嬉しいです。個人的感想でしかありません。Pythonpython/seleniumを使ってtwitterに自動投稿してみるseleniumはスクレイピングを非常に簡易に実装できる機能です。今回は非常にシンプルなtwitterへの自動投稿機能を作成していきます。cron/launchedによるデーモン処理と合わせると実行まで自動化することも可能です。コメントをキャンセルメールアドレスが公開されることはありません。科目例示と具体的使用事例2019.11.12python/selenium/bs4でハローワークの求人情報を取得してメールしてみる2019.06.23python/seleniumを使ってtwitterに自動投稿してみる2019.06.162020.01.29。