Ich bin neu in Python und Stackoverflow. Ich habe versucht, das "While-Loop" -Beispiel von Pyschools für die Quadratwurzelnäherung zu lösen (Thema 5: Frage 9). Ich kann jedoch nicht die gewünschte Ausgabe erhalten. Ich bin mir nicht sicher, ob dieses Problem mit der Schleife oder der Formel zusammenhängt. Hier ist die Frage:pyschools Quadratwurzel Approximation
Erstellen Sie eine Funktion, die in einer positiven Zahl nimmt und zurück 2 ganze Zahlen, so dass die Zahl zwischen den Quadraten der 2 ganzen Zahlen ist. Sie gibt dieselbe Ganzzahl zweimal zurück, wenn die Zahl ein Quadrat einer Ganzzahl ist.
Beispiele:
sqApprox(2)
(1, 2)
sqApprox(4)
(2, 2)
sqApprox(5.1)
(2, 3)
Hier ist mein Code:
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)
Wenn ich diese Funktion sqApprox(4)
und nennen es auf IDE erstellen, erhalte ich auszahlen ut (2, 0)
.
Könnte mir bitte jemand sagen, was ich falsch mache? Danke im Voraus. Diese
formatieren Code beginnen mit einer leeren Zeile, dann fügen Sie vier Leerzeichen an den Anfang jeder Zeile des Codes, dann lassen Sie eine leere Zeile am Ende – Amias
Warum nicht vergessen 'minsq' und' maxsq' und einfach zurück '(i- 1, i) 'oder' (i-1, i-1) '(abhängig davon, ob es ein perfektes Quadrat ist oder nicht)? Alles, was Sie tun müssen, ist das letzte 'i' mit' i * i <= num' zu finden, und Sie können das mit einer 1-zeiligen While-Schleife machen. –