擅长:python、mysql、java
<blockquote>
<p><em>The prompt for the input repeats several times...</em></p>
</blockquote>
<p>这是因为您多次调用该函数:</p>
<pre><code>root = newraph(nthroot, 1, 0.000001) # call the solver
</code></pre>
<p>然后在<code>newraph</code>内结束</p>
<pre><code>while (abs(Xold - Xnew) > h):
Xold = Xnew
Xnew = Xold - f(Xnew) / derivative(f, Xold, h) #NewtonRaphson formula
</code></pre>
<p>其中<code>f</code>是<code>nthroot</code>。你知道吗</p>
<p>然后在<code>derivate</code>(两次)中称之为agin:</p>
<pre><code>def derivative(f, x, h):
return (f(x+h) - f(x-h)) / (2.0*h)
</code></pre>
<h2>可能解</h2>
<p>你可以让<code>nthroot</code>成为一个类</p>
<pre><code>class nthroot_generator:
def __init__(self, number, root):
self.number = number
self.root = root
def __call__(self, x):
return x**(self.root) - (number)
</code></pre>
<p>像这样称呼:</p>
<pre><code>root = int(input("Please Enter a nth root (n) : "))
number = int(input("Please Enter a number (x): "))
trueroot = newraph(nthroot_generator(root, number), 1, 0.000001)
</code></pre>