Collatz
私は呼び出されたクラスとクラスのオブジェクトを作成する関数を所有しています。コラッツ共役collatz_it
を使用して1に到達するためのステップ数と、ジェネレーターを使用して100万までの対応するステップを生成しようとしています
import collatz
values = {}
count = 0
#collatz.collatz_it(n)
def gen():
n = 0
x = 0
while True:
yield x
n += 1
x = collatz.collatz_it(n)
for i in gen():
count += 1
values[count] = i
print values
if count == 1000000:
break
ご覧のとおり、指定された数値の collatz 予想を使用して 1 に到達するまでに必要なステップ数を生成し、対応する数値を使用して辞書に追加しますが、辞書の値を出力すると、出力はぎこちなく次のようになります。これ:
{1: 0}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>, 3: <collatz.Collatz instance at 0x01DCDF58>}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>, 3: <collatz.Collatz instance at 0x01DCDF58>, 4: <collatz.Collatz instance at 0x01DCDFA8>}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>, 3: <collatz.Collatz instance at 0x01DCDF58>, 4: <collatz.Collatz instance at 0x01DCDFA8>, 5: <collatz.Collatz instance at 0x01DCDEB8>}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>, 3: <collatz.Collatz instance at 0x01DCDF58>, 4: <collatz.Collatz instance at 0x01DCDFA8>, 5: <collatz.Collatz instance at 0x01DCDEB8>, 6: <collatz.Collatz instance at 0x01DCDE90>}
{1: 0, 2: <collatz.Collatz instance at 0x01DCA580>, 3: <collatz.Collatz instance at 0x01DCDF58>, 4: <collatz.Collatz instance at 0x01DCDFA8>, 5: <collatz.Collatz instance at 0x01DCDEB8>, 6: <collatz.Collatz instance at 0x01DCDE90>, 7: <collatz.Collatz instance at 0x01DE8940>}
print i
必要な出力を取得する代わりに印刷する場合print values
、これは基本的にprint
ステートメントが__str__
クラスのメソッドをトリガーするためです
入力せずに辞書に実際の手順を追加する方法はありませんか<collatz.Collatz instance at 0x01DCDFA8>
?メソッドからデータを取得する方法はありますか?__str__
私の辞書は次のようになります:
{1: 0}
{1: 0, 2: 1}
{1: 0, 2: 1, 3: 7}