2016-09-04 9 views
-1

私は一般的にはPythonやコーディングには新規です。また、次のコードでループ中の質問が発生しました。Python while loop while breakはいつですか?


a = int(input('input a number here: ')) 

def largest_factor(x): 
    factor = x - 1 
    while factor > 0: 
     if x % factor == 0: 
      return factor 
     factor -= 1 
     print(factor) 

largest_factor(a) 

それは、私のpython 3.5を使用していて、私の理解では、ループが> 0になるまで中断されませんので、私はそれは、しかし試験に印刷(因子)を置きます(例えば、x = 100、factorが100から50まで停止して停止した場合など)最大の要因で停止し、0に達しませんでした。return文がwhileループを強制終了しましたか?あなたの時間をありがとう。

+2

はいreturnが関数を終了するので、factor_firstを使って、print_first(a)のfに対して生成関数fを使って 'print(list(max_factor(a))) 'http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python –

+0

' return'文は 'while'ループに直接影響しません。むしろ、関数'max_factor(x) 'を終了します。 'largest_factor'を繰り返し呼び出してループが値を生成し続けることを目標とするならば、代わりに' yield'を使ってループを生かしておくことができます。 – Jeff

+0

疑わしい質問です。多くの意味のある開発者の関心を引き付けるためには、あまりにも完全に精緻化されています。 – jgomo3

答えて

0

このループを終了するには、2つの方法があります.1つは、while文が終了するまで待つか、要因を返すことです。

0

あなたの前提は正しいです。ループがreturnステートメントにヒットすると、関数は終了します。 100は50で割り切れるので、ループは関数の終了とともに終了します。