Pythonプログラミングの古典的なケース【試験問題】順列と組み合わせ

この記事では、Python プログラミングの古典的なケースを探り、Python を没入的に学習できるようにします。最初にトピックについて考えてから、この記事の問題解決方法と比較してください。異なる意見がある場合は、公式アカウントで私と議論してください。

1. 古典事例【試験問題】

  
質問:

1到ipt_num(3)能组成多少个互不相同且不重复的三位数字数组?

入力:

3

出力:

13 能组成 6 种互不相同且不重复的三位数
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

  
  

2. 古典的なケースの問題解決方法

  
上記の場合の問題の解決策は次のとおりです。
  
ステップ 1: 3 層の for ループを使用して、1 から ipt_num までのすべての可能な数値をリストします。
  
step2: 3 つの数字が異なる場合は、それらを結果リストに追加します。
  
具体的なコードは次のとおりです。

def ord_pl(ipt_num):
    num = ipt_num + 1
    all_num = list()
    for i in range(1, num):
        for j in range(1, num):
            for k in range(1, num):
                if i!=j and i!=k and j!=k:
                    all_num.append([i, j, k])
    print(1, '到', ipt_num, '能组成', len(all_num), '种互不相同且不重复的三位数')
    return all_num
ord_pl(4) 

for i in range(1, num): 1 から ipt_num までの等差数列をステップ サイズ 1 で生成します。
  
i!=j と i!=k と j!=k: i、j、k が互いに異なるかどうかを判断し、異なる場合は True を返し、そうでない場合は False を返します。
  
答えを得ました:

14 能组成 24 种互不相同且不重复的三位数
[[1, 2, 3],
 [1, 2, 4],
 [1, 3, 2],
 [1, 3, 4],
 [1, 4, 2],
 [1, 4, 3],
 [2, 1, 3],
 [2, 1, 4],
 [2, 3, 1],
 [2, 3, 4],
 [2, 4, 1],
 [2, 4, 3],
 [3, 1, 2],
 [3, 1, 4],
 [3, 2, 1],
 [3, 2, 4],
 [3, 4, 1],
 [3, 4, 2],
 [4, 1, 2],
 [4, 1, 3],
 [4, 2, 1],
 [4, 2, 3],
 [4, 3, 1],
 [4, 3, 2]]

結果が正しいことを手動で確認できます。この方法の利点は、ロジックが単純で理解しやすいことです。ここまで、Pythonでのプログラミングの古典的なケース【試験問題】の順列と組み合わせについて説明してきました。
  
Python の関数について詳しく知りたい場合は、公式アカウントの「Python を学ぶ」モジュールで関連記事を読むことができます。
  
興味があるかもしれません:
Python でピカチュウを描くPython で
ワード クラウド マップを描く
Python で 520 の永遠の心拍数を描くPython の顔認識 -あなただけ
私の目に映るのPython の py2neo ライブラリを使用して neo4j を操作する関係マップを作成するPython ロマンチックな告白ソース コード集 (愛、バラ、フォト ウォール、星空の下での告白)



おすすめ

転載: blog.csdn.net/qq_32532663/article/details/127950186