質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.11%

繰り返し処理時に思うようにカウントアップできません。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 206

score 30

前提・実現したいこと

ビンゴ表を用いてビンゴしたした数をカウントしたいです!
どなたかお教え頂けましたら幸いです。

発生している問題・エラーメッセージ

ビンゴした時にカウントされるものの、
繰り返し処理されるたびにカウントされ続け理想の数字が算出されないです。

#pd.DataFrameで作成した表です。

      f     g     h     i     j
a  {14}   {6}  {15}  {10}     1
b  {22}  {18}  {27}  {30}  {17}
c  {36}  {37}  カラ   {41}    35
d  {58}  {47}  {59}  {55}  {50}
e  {66}  {62}    74  {71}  {64}


列を対象にカウントした時、本来であれば
ビンゴ数は3ですがなぜか20などといった処理した回数がカウントされてしまいます。
おそらくビンゴ判定する際の繰り返し処理が原因で

試したこと

ifの中でrange()を使って回数制限をしたり、
bingo_countを整数ではなくlistにして.appendで5を追加し5の数をカウント数に置き換えようとしましたが
上記の処理と同じ様に5が処理された回数だけ増えていきまた20などといった数字になってしまいました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • A_kirisaki

    2021/01/07 16:27

    試しに内側の for だけ実行しましたが正しく 3 と表示できました。外側の for にあやしい部分はありませんか?

    キャンセル

  • nre

    2021/01/07 16:35

    大変失礼いたしました。
    もう一つ処理を記載し忘れてしまいましたので修正させて頂きます。

    キャンセル

  • A_kirisaki

    2021/01/07 16:42

    省略無しで全部掲載されたほうが速いかと思われます。

    キャンセル

  • nre

    2021/01/07 16:44

    かしこまりました!

    キャンセル

回答 1

checkベストアンサー

+1

count_up_bingo = 0
count_up_reach = 0

これらは、以下の場所でやるのでは?

for b_num in num:
    count_up = count_up + 1
    count_up_bingo = 0
    count_up_reach = 0


追加の変更です。以下のようにしてください。

for b_num in num:
    count_up = count_up + 1
    if b_num in df1.values:
        count_up_bingo = 0
        count_up_reach = 0
        df1 = df1.replace(b_num, '{' + str(b_num) + '}')for b_num in num:

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/01/08 12:08

    エラーメッセージの意味は、count_up_bingoという変数がまだありません、ですね。

    私のアドバイスにもれがありました。python言語ではなく、処理の組立の問題です。
    最初に指摘は、1球ごとに数え直しましょう。
    二回目の指摘は、球が当たらなかったときには前回の状態を表示しましょう。
    今回抜けていたのは、ゲームが始まってまだ一球も当たっていないときには何を表示するか、です。
    考えてみて分からなければ再度聞いてください。

    キャンセル

  • 2021/01/08 14:39

    大変お忙しい中、
    貴重なアドバイスをして頂き誠にありがとうございます。
    記載して頂いた内容を元に、
    再度組み立てに挑戦いたします!
    わからない場合はお伺いさせて頂きます!

    キャンセル

  • 2021/01/08 16:35

    大変申し訳ございません。
    先程ご教示頂きました変更コードを実行したら、
    エラーが表示されず無事に処理が完了致しました!

    エラーが出た原因はもしかしたら、
    インデントミスかもしれません。

    この度は丁寧にご教示して頂き誠にありがとうございました!!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る