Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python入門】3つの数字を入力して全ての組み合わせ(順列)を表示する方法

ユーザーから入力を受け取った3つの数字について、すべての可能な組み合わせ(順列)を表示したい場合には、ネストされたループ(多重ループ)を使用します。

以下に具体的な実装例を示します。

サンプルコード

first_num = int(input("最初の数字を入力してください..."))
second_num = int(input("2番目の数字を入力してください..."))
third_num = int(input("3番目の数字を入力してください..."))
my_list = []
print("最初の数字は")
print(first_num)
print("2番目の数字は")
print(second_num)
print("3番目の数字は")
print(third_num)

my_list.append(first_num)
my_list.append(second_num)
my_list.append(third_num)

for i in range(0,3):
    for j in range(0,3):
        for k in range(0,3):
            if(i!=j&j!=k&k!=i):
                print(my_list[i],my_list[j],my_list[k])

実行結果

最初の数字を入力してください...3
2番目の数字を入力してください...5
3番目の数字を入力してください...8
最初の数字は
3
2番目の数字は
5
3番目の数字は
8
3 5 8
3 8 5
5 3 8
5 8 3
8 3 5
8 5 3

コードの解説

  • ユーザーから3つの数字を入力として受け取ります。

  • 組み合わせを格納するための空のリストを作成します。

  • 入力された3つの数字をコンソールに表示します。

  • これらの数字を append() メソッドでリストに追加します。

  • 3重のネストされたループを使用し、リスト内の各要素を反復処理します。

  • 条件式 i!=j&j!=k&k!=i により、同じ位置の要素が重複しない場合のみ、その組み合わせをコンソールに出力します。

補足:itertools を使ったより簡潔な方法

Pythonの標準ライブラリ itertools.permutations を使うと、同じ処理をより簡潔に記述できます。

from itertools import permutations

nums = [3, 5, 8]
for p in permutations(nums):
    print(*p)

この方法では、重複チェックを自分で書く必要がなく、コードの可読性も向上します。状況に応じて使い分けると良いでしょう。

  1. Pythonで全ての有効なパスの中から最大スコアを見つけるプログラム

    2つの配列 nums1 と nums2 が与えられているとします。「有効なパス」は次のように定義されます。nums1 または nums2 のいずれかを選択し、インデックス0から走査を開始する。配列を左から右へ向かって進む。移動中に、nums1 と nums2 の両方に存在する共通の値に出会った場合は、その時点でパスをもう一方の配列へ切り替えることができます。スコアとは、有効なパス上の一意な値の合計のことです。ここでの課題は、考えられるすべての有効なパスの中から得られる最大スコアを求めることです。答えが大きすぎる場合は、結果を 10^9+7 で割った余りを返してください。たとえば、入力が num

  2. 【Python】配列内のすべての桁を使って3で割り切れる数を作成できるか判定する方法

    この記事では、与えられた問題文を解決するための解法とアプローチについて詳しく解説します。 問題文 整数の配列が入力として与えられたとき、これらの数値に含まれるすべての桁を使用して、3で割り切れる整数を作成できるかどうかを判定する必要があります。 ここでは、整数の配列と配列の長さという2つの引数を受け取る関数を作成します。 解法のポイント この実装は、暗算でよく使われる数学的な性質に基づいています。それは次の通りです。 「ある数の各桁の合計が3で割り切れるならば、その数自体も3で割り切れる」 この性質を利用すると、実際に桁を組み合わせて数値を生成する必要はなく、配列内の各要素について3で割った余