今迄の学習の応用をしてみましょう
応用問題 -色の組み合わせ‐
for と format と input を使います
色が 10色 あります。その中から4色だけを選んでグループを作ると、
何通りの組み合わせが出来るでしょうか?
「赤、青、黄、緑、紫、黒、白、桃、灰、茶」 の10色の中から4色選ぶと
↓
「赤、青、黄、緑」
「赤、青、黄、紫」
「赤、青、黄、黒」
・
・
「白、桃、灰、茶」というように何通りか組み合わせが出来ますね。
for でコードを書いて input と formatで色数と組数を指定しましょう。
色数 10 組数 4 組み合わせは「210」通りです
と、表示されるようにしてください。
しかし、PYTHON 以前に計算方法が解らなければ、コードなんて書けません。
組み合わせの計算方法
色が 10色 あります。その中から4色だけを選んでグループを作ると、
何通りの組み合わせが出来るでしょうか?
まず、4色のグループなので
1×2×3×4 です。
10色の中から4色なので
10×9×8×7 というように 10 から 4つ カウントダウンしていきます。
10×9×8×7 を 1×2×3×4 で割ると答えがでます。
10×9×8×7 / 1×2×3×4 = 210
解答例
colors = int(input("色数"))
group = int(input("組数"))
c=1
for i in range(group):
c = c*colors
colors = colors-1
g=1
for i in range(1,group+1):
g = g*i
combi = c/g
combi = int(combi)
print(f"組み合わせは「{combi}」通りです")
色数 10 組数 4 組み合わせは「210」通りです
色数 6 組数 3 組み合わせは「20」通りです
補足説明
for i in range(group): で(group”組数”)の数だけループさせる事が出来ます。
c = c*colors で色数を掛けていきます。”c=c×10”
colors = colors-1 でループする毎に色数を1づつ減らします。”colors = 10-1″
for i in range(1,group+1): で(group”組数”)は 4 なのですが、
range() の中に入れてしまうと (0,1,2,3) になっています。
(1,group+1) の+1で(0,1,2,3,4)にして1,(0,1,2,3,4)から始めます。
combi = int(combi) は、割り算 ”combi = c/g” を使うと float(少数) になり
”組み合わせは「210.0」通りです”
と表示されて 見にくいので int (整数)に直します。
コメント等、お気軽にどうぞ ( ̄▽ ̄)