前提・実現したいこと
1を2個、0を10個並べた順列を、2つの1の現れる項の小さい順にナンバリングしたうえで、それを用いて、ナンバリングした数字を打ち込めば順列の配列ができるようにしたい。
例えば、
1を入力したときに、110000000000を対応させて、lを[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]という配列になるようにしたいのです。
また、12を入力したときには、011000000000を対応させて、lが[0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]という配列になるようにしたい。
発生している問題・エラーメッセージ
Please Enter Number1 Traceback (most recent call last): File "enzan3.py", line 11, in <module> l = [int(x) for x in list(str(n))] File "enzan3.py", line 11, in <listcomp> l = [int(x) for x in list(str(n))] ValueError: invalid literal for int() with base 10: '<'
該当のソースコード
Python
1import numpy as np 2m = input("Please Enter Number") 3for m in range(1, 12): 4 def n(m): 5 10**12+10**m 6 7for m in range(12, 22): 8 def n(m): 9 10**11+10**m 10 11l = [int(x) for x in list(str(n))] 12#(以下略)
試したこと
定義の時点でintやstrを入れてみましたがダメでした。
補足情報(FW/ツールのバージョンなど)
Python3.6
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
やりたいのはこんなんですかね。質問がよくわからないので当てずっぽうですが。
Python
1mylist_1 = [10**12+10**m for m in range( 1, 12)] # リスト内包表記を使った 2mylist_2 = [10**11+10**m for m in range(12, 22)] # 同上 3 4mylist = mylist_1 + mylist_2 # リストの連結
追記
def func(m): return 10**12+10**m m = 1 num = func(m) l = list(str(num)) # もしくは l = list(map(int, l))
もっと追記
def func(i, j): mylist = [0]*12 mylist[i], mylist[j] = 1, 1 return mylist mylist = [] for i in range(2): for j in range(i+1,12): mylist.append(func(i, j))
投稿2018/06/02 04:20
編集2018/06/02 05:08総合スコア3601
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/02 04:23
2018/06/02 04:29
2018/06/02 04:33
2018/06/02 04:51
2018/06/02 04:58
2018/06/02 05:09
2018/06/02 05:18
2018/06/02 05:19
2018/06/02 05:20
2018/06/02 05:29
0
def
は関数の定義であって呼び出しではないので、そのコードで関数を定義している意味はありません。というか、意図通り動いていません。
エラーの原因はlist(str(n))
が何になっているか確認してみるとわかります。
python
1>>> def n(): 2... pass 3... 4>>> str(n) 5'<function n at 0x7f5161ae1f28>' 6>>> list(str(n)) 7['<', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', ' ', 'n', ' ', 'a', 't', ' ', '0', 'x', '7', 'f', '5', '1', '6', '1', 'a', 'e', '1', 'f', '2', '8', '>']
str(func)
で関数オブジェクトを表す文字列が返るので、それを変換しようとしてしまっています・・・。
追記
python
1for m in range(1, 12): 2 def n(m): 3 10**12+10**m 4for m in range(12, 22): 5 def n(m): 6 10**11+10**m
これは関数の定義ではなく、for文の中で関数を定義しているだけです(しかもreturnもしていないから無意味な関数だし・・・)。for文を回している意味もないし(何回定義しても最後に定義されたものしか残らないし、そもそもforで値が束縛されるmと仮引数のmとが別物なので意味ないとか、それ以前にnを呼び出していないとか・・・)、何がしたいのかよくわかりません。
追記2
1つずつ加算で計算するコードはなんか書けました。
python
1def incr_enzan(lst): 2 result_lst = lst[:] 3 if lst[-1] != 1: 4 first_one_passed = False 5 for i, x in enumerate(lst): 6 if x == 1 and not first_one_passed: 7 first_one_passed = True 8 elif x == 1 and first_one_passed: 9 break 10 result_lst[i] = 0 11 result_lst[i+1] = 1 12 else: 13 for i, x in enumerate(lst): 14 if x == 1: 15 break 16 result_lst[-1] = 0 17 result_lst[i] = 0 18 result_lst[i+1] = 1 19 result_lst[i+2] = 1 20 return result_lst 21 22 23lst = [1,1,0,0,0,0,0,0,0,0,0,0] 24print(1, lst) 25 26for x in range(2, 67): 27 lst = incr_enzan(lst) 28 print(x, lst) 29""" 301 [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 312 [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 323 [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] 334 [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0] 345 [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] 356 [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] 367 [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0] 378 [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0] 389 [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] 3910 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0] 4011 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] 4112 [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 4213 [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] 4314 [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0] 4415 [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] 4516 [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] 4617 [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0] 4718 [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0] 4819 [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] 4920 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0] 5021 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] 5122 [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0] 5223 [0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0] 5324 [0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0] 5425 [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0] 5526 [0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0] 5627 [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0] 5728 [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0] 5829 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0] 5930 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1] 6031 [0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0] 6132 [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0] 6233 [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0] 6334 [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0] 6435 [0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0] 6536 [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0] 6637 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0] 6738 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1] 6839 [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0] 6940 [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0] 7041 [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0] 7142 [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0] 7243 [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0] 7344 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0] 7445 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1] 7546 [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0] 7647 [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0] 7748 [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0] 7849 [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0] 7950 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0] 8051 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1] 8152 [0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0] 8253 [0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0] 8354 [0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0] 8455 [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0] 8556 [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] 8657 [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0] 8758 [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0] 8859 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0] 8960 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] 9061 [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0] 9162 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0] 9263 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1] 9364 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0] 9465 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1] 9566 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1] 96"""
もしかしたら式1つでn番目の項が出せるかもしれませんが、思いつかなかったので得意な人に譲ります・・・。
こういうコードで一式出して、辞書に突っ込んでおけば良いでしょう。
投稿2018/06/02 03:37
編集2018/06/02 05:08総合スコア30933
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/02 03:54
2018/06/02 04:01
2018/06/02 04:08
2018/06/02 04:14
2018/06/02 04:20
2018/06/02 04:27
2018/06/02 04:29
2018/06/02 04:37
2018/06/02 04:53
2018/06/02 04:55
2018/06/02 05:00
2018/06/02 05:03
2018/06/02 05:07
2018/06/02 05:09
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。