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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1504閲覧

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

nre

総合スコア35

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/01/07 07:11

編集2021/01/12 04:13

前提・実現したいこと

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

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

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

python

1#pd.DataFrameで作成した表です。 2 3 f g h i j 4a {14} {6} {15} {10} 1 5b {22} {18} {27} {30} {17} 6c {36} {37} カラ {41} 35 7d {58} {47} {59} {55} {50} 8e {66} {62} 74 {71} {64}

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

試したこと

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A_kirisaki

2021/01/07 07:27

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

2021/01/07 07:35

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

2021/01/07 07:42

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

2021/01/07 07:44

かしこまりました!
guest

回答1

0

ベストアンサー

count_up_bingo = 0
count_up_reach = 0

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

python

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

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

python

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

投稿2021/01/07 08:07

編集2021/01/07 09:58
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nre

2021/01/07 08:54

大変お忙しい中、 ご回答して頂き誠にありがとうございます。 試しに実行して見たのですが、 for b_num in num: の下のifからは無事にカウントできたのですが、 そのしたのelifの部分でカウントがうまく表示されません。 どの様にしたらよろしいかお教え頂けましたら幸いです。
ppaul

2021/01/07 09:20

その下のelifって何行目ですか?
nre

2021/01/07 09:36

大変失礼致しました。 elifではなく84行目のelseでした。 この処理を行った際に 他の処理でカウントしていたcount_up_reachとcount_up_bingoが反映されず数字が0と表示されてしまいます。 ご回答して頂けましたら幸いです。
ppaul

2021/01/07 09:41

そうか、出た玉がなかったときも現状を出しているんですね。 count_up_bingo = 0 count_up_reach = 0 の移動先を、if b_num in df1.values:の後ろに変更してください。 回答の方も修正しておきます。
nre

2021/01/08 02:44

ご返信がおそくなってしまい大変申し訳ございません。 追加変更点を元にコードの配置を変更しましたが、 同じ様に84行目のelse:部分でエラーが出てしまい、 File "<input>", line 90, in <module> NameError: name 'count_up_bingo' is not definedと表示されてしまいます。 今一度私の方でも問題解決に取り組みます!
ppaul

2021/01/08 03:08

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

2021/01/08 05:39

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

2021/01/08 07:35

大変申し訳ございません。 先程ご教示頂きました変更コードを実行したら、 エラーが表示されず無事に処理が完了致しました! エラーが出た原因はもしかしたら、 インデントミスかもしれません。 この度は丁寧にご教示して頂き誠にありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問