私はPythonとstackoverflowの初心者です。私は平方根近似のためのPyschoolのwhileループの例を解決しようとしています(トピック5:質問9)。しかし、私は希望の出力を得ることができません。この問題がループや数式に関連するかどうかはわかりません。ここで質問です:pyschools平方根近似
は正の数にとる関数を作成し、数が2つの 整数の二乗との間になるように、2つの 整数を返します。数値が正方形の場合は同じ整数を2回返します。 整数です。
例:ここでは
sqApprox(2)
(1, 2)
sqApprox(4)
(2, 2)
sqApprox(5.1)
(2, 3)
私のコードです:
def sqApprox(num):
i = 0
minsq = 1 # set lower bound
maxsq = minsq # set upper bound
while i*i<=num: # set 'while' termination condition
if i*i<=num and i >=minsq: # complete inequality condition
minsq = i
if i*i<=num and i <=maxsq: # complete inequality condition
maxsq = i
i=i+1 # update i so that 'while' will terminate
return (minsq, maxsq)
私はこの機能sqApprox(4)
を作成し、IDEでそれを呼び出すと、私が手アウトプットut (2, 0)
。
私が間違っていることを教えてもらえますか?前もって感謝します。
空白行で始まる書式を指定し、各行の先頭に4つのスペースを追加し、最後に空白行を残します – Amias
'minsq'と' maxsq'を忘れずに '(i- 1、i) 'または'(i-1、i-1) '(それが完全な正方形であるかどうかに応じて)?あなたがする必要があるのは、最後の 'i'を' i * i <= num'で見つけて、それを1行whileループで行うことだけです。 –