2016-08-30 8 views
-2

これは時間の100%で動作しないことがわかっていますが、それは元々生成された数値が条件を満たす場合にのみ機能します。時々Python関数自体を呼び出すことは可能ですか?

import string 
import random 

def target(): 
    a = random.choice(string.digits) 
    b = random.choice(string.digits) 
    c = random.choice(string.digits) 
    if a == b or a == c or c ==b or a == b == c: 
    target(targt()) 
    else: 
    return str(a + b + c) 

だから私は何を求めているのだろうか?

+0

「自ら」とはどういう意味ですか? 'target'の中から' target() 'を呼び出すことができます。 – ShadowRanger

+1

再帰ですが、 'targt()'は何ですか? – Li357

+0

私はプログラミングにとって非常に新しいです。申し訳ありませんが、うわべがひどくフレーズされていたり、意味が分かりません。 – user182477

答えて

1

この関数は引数をとらないので、ifステートメントにはreturn target()を入れることができます。しかし、これはおそらくループで処理するほうがよいでしょう。再帰について具体的に学習しようとしている場合は、ここで再帰のみを使用します。

条件の最後にor a == b == cが必要ないことにも注意してください。これは、前の節が真である場合にのみ当てはまります。

+0

面白いことに、テストを 'if len({a、b、c})<3:'に変更するだけで、ユニーク化するために 'set'を使い、重複が排除されたかどうかを判断し、一意性テストの – ShadowRanger

関連する問題