この記事では、Python プログラミングの古典的なケースを探り、Python を没入的に学習できるようにします。最初にトピックについて考えてから、この記事の問題解決方法と比較してください。異なる意見がある場合は、公式アカウントで私と議論してください。
記事ディレクトリ
1. 古典事例【試験問題】
質問:
1到ipt_num(≥3)能组成多少个互不相同且不重复的三位数字数组?
入力:
3
出力:
1 到 3 能组成 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 を返します。
答えを得ました:
1 到 4 能组成 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 ロマンチックな告白ソース コード集 (愛、バラ、フォト ウォール、星空の下での告白)