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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

735閲覧

pythonで身長、体重のパターンによってクラス分けをしたい

moromoro

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/01 06:04

タイトルの通り体重と身長に12クラスに分けて、それぞれのクラス適したコメントを返信したいと考えています。

python

1user = [50,170]#ユーザーの情報[体重,身長]の順 2 3def bunseki(u): 4 taiju = u[0] 5 sintyo = u[1] 6 list = [] 7 if taiju <=50: 8 list.append(0) 9 elif taiju <= 60: 10 list.append(1) 11 elif taiju <= 70: 12 list.append(2) 13 else: 14 list.append(3) 15 if sintyo <160: 16 list.append(0) 17 elif sintyo <170: 18 list.append(1) 19 else: 20 list.append(2) 21 return list 22kekka = bunseki(user) 23print(kekka)#[0, 2] 24#このkekkaによってまた条件分岐を行うのか。 25#if分の組み合わせだと重くならないか不安。あともっと楽にできるなら知りたいです。

体重は、50未満、60未満、70未満、70以上の4つにわけ
身長は、160未満180未満180以上の3つに分け
合計12パターンにしたいです。

現在それぞれif文で分けた後、1~12のクラスにまたif文で分ける方法しか思い付いていません。
最終的にはAPI化したいので、できる限りはやく結果を出せるものを期待しています。
楽に条件分岐する方法を知っている方がいればご教授よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のようにループで判定することができます。

Python

1from operator import lt, le 2 3def get_class(val, range_lst, op): 4 c = len(range_lst) # 最初に範囲外とみなす 5 for i, v in enumerate(range_lst): 6 if op(val, v): # 比較 7 c = i 8 break 9 return c 10 11def bunseki(u): 12 taiju, sintyo = u 13 14 range_t = [50,60,70] 15 ct = get_class( taiju, range_t, le) # 以下 16 range_s = [160,180] 17 cs = get_class( sintyo, range_s, lt) # 未満 18 return ct, cs 19 #return cs * (len(range_t)+1) + ct # スカラー値(0...11)でクラス分けしたいならこちら 20 21print(bunseki((40,150)))#(0, 0) or 0 22print(bunseki((60,170)))#(1, 1) or 5 23print(bunseki((80,180)))#(3, 2) or 11 24

投稿2021/12/01 06:32

編集2021/12/01 06:46
can110

総合スコア38278

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問