前提・実現したいこと
pythonで
py
1def card(start,end): 2 #省略 3 4#使用例 5card(0,3)
という関数を作り、
startからendまでの数で並び方が何通り在るか、その中でも0から始まるものとその数(あったら)を
タプル型で表示するようになるはずの関数を作っています。
card(0,2)だったら「0から始まるもの:(0,1,) (0,2,)
0以外の自然数で始まるもの:(1,0,)(1,2,)(2,0,)(2,1,)
4(+2)通り」という感じです。
発生している問題・エラーメッセージ
- 区別されるはずの0で始まるものが区別されない。
該当のソースコード
python2
1def card(start,end): 2 import itertools 3 li = list(itertools.permutations(range(start,end+1),end-start+1)) 4 print("=== 0から始まるもの ===") 5 lix = 0 6 for index, item in enumerate(li): 7 if item[0] == 0: 8 print(li[index]) 9 li.pop(index) 10 lix += 1 11 print("=== 普通のもの ===") 12 print(li) 13 print(str(len(li)) + "(+"+str(lix)+")通り")
py
1#output 2 3=== 0から始まるもの === 4(0, 1, 2, 3) 5(0, 2, 1, 3) 6(0, 3, 1, 2) 7=== 普通のもの === 8[(0, 1, 3, 2), (0, 2, 3, 1), (0, 3, 2, 1), (1, 0, 2, 3), (1, 0, 3, 2), (1, 2, 0, 3), (1, 2, 3, 0), (1, 3, 0, 2), (1, 3, 2, 0), (2, 0, 1, 3), (2, 0, 3, 1), (2, 1, 0, 3), (2, 1, 3, 0), (2, 3, 0, 1), (2, 3, 1, 0), (3, 0, 1, 2), (3, 0, 2, 1), (3, 1, 0, 2), (3, 1, 2, 0), (3, 2, 0, 1), (3, 2, 1, 0)] 921(+3)通り
試したこと
いちどforループの中に何をチェックしているかprintで調べたところ、
(0, 1, 3, 2), (0, 2, 3, 1), (0, 3, 2, 1)のみ表示がされない=反応していませんでした。
処理に時間がかかると予想し、sleepで0.5秒止めてみたものの正常に作動は示せんでした。
補足情報(FW/ツールのバージョンなど)
replitで実行しています。
python v3.8.2
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/20 01:21