2016-08-10 21 views
-1

この質問は少し具体的なようですが、それについては申し訳ありませんが、私には困惑しています。私は、パスワードジェネレータを作成しています。パスワードジェネレータは、文字列(別名ウェブサイトのURL)を受け取り、それをウェブサイトの名前に基づいてバックトラックできない安全なパスワードに処理します。再帰的なPython関数から値を返すには?

コードの一部では、私はこのようになります再帰関数作成:

def get_number(n = 0, nums = ''): 
    for i in range(0, len(url)): 
     #both n and nums are changed 
    if len(nums) < num_length: 
     get_number(n, nums) 
    else: 
     print(nums) 
     return(nums) 

を...

print(get_number()) 

私は印刷するので、私は、二回出力に「NUMS」を期待しますそれはelseブロックにあり、後で返り値を出力します。しかし、それが再帰的ループを通過する場合、 'nums'はelseブロックから出力され、関数は 'None'を返します。 if len(nums) < num_lengthが最初にfalseである場合、適切な値が返されます。

戻ってくるオブジェクトが実際には「なし」ではないことを確認した場合、なぜ「なし」が返されますか?

私は少しPythonに慣れています、彼らは再帰を別々に扱いますか?固定

問題:

はお時間を

編集ありがとうございました。再帰呼び出しでreturn文を忘れた。ありがとう:D

答えて

2

入れ子になったget_numberの前にreturnが見つからないと思います。つまり、実行して戻っていますが、再帰的な値で何もしていません。

def get_number(n = 0, nums = ''): 
    for i in range(0, len(url)): 
     #both n and nums are changed 
    if len(nums) < num_length: 
     return get_number(n, nums) 

    print(nums) 
    return nums 
+0

これを右に見ました。ありがとうございました –

+0

よろしくお願いします!問題が解決した場合は、回答を受け入れてもらえますか?これは未回答の質問を探している人のためのフィルタを助けます:) – Karin