<p>找到了解决办法。我的判别函数在while语句之外,因此当从用户输入3个变量时,它会在每个循环中保持计算出的第一个判别函数,这就是为什么每次运行都会产生2个答案的原因。通过将判别函数的位置更改为while语句内部,它现在将重新计算while语句的每个循环的判别函数。这是解决此问题的正确代码:</p>
<pre><code>import math
import Disc
def main():
coeffA = int(input('Enter the coefficient A: '))
while coeffA != 0:
coeffB = int(input('Enter the coefficient B: '))
coeffC = int(input('Enter the coefficient C: '))
disc = Disc.discriminant(coeffA, coeffB, coeffC)
if disc > 0:
solutionOne = (-coeffB + math.sqrt(disc)) / (2 * coeffA)
solutionTwo = (-coeffB - math.sqrt(disc)) / (2 * coeffA)
print('Solutions are: ' + str(solutionOne) + ' and ' + str(solutionTwo))
coeffA = int(input('Enter the coefficient A: '))
elif disc == 0:
solutionOne = -coeffB / (2 * coeffA)
print('Solution is: ' + str(solutionOne))
coeffA = int(input('Enter the coefficient A: '))
elif disc < 0:
print('Equation has two complex roots.')
coeffA = int(input('Enter the coefficient A: '))
print('Program ended.')
# End of the main function
</code></pre>
<p>产生的正确输出代码如下:</p>
<pre><code>Enter the coefficient A: 1
Enter the coefficient B: 2
Enter the coefficient C: -8
Solutions are: 2.0 and -4.0
Enter the coefficient A: 1
Enter the coefficient B: -12
Enter the coefficient C: 36
Solution is: 6.0
Enter the coefficient A: 2
Enter the coefficient B: 9
Enter the coefficient C: -5
Solutions are: 0.5 and -5.0
Enter the coefficient A: 4
Enter the coefficient B: 6
Enter the coefficient C: 20
Equation has two complex roots.
Enter the coefficient A: 0
Program ended.
</code></pre>
<p>感谢Stack Overflow社区提供的所有帮助和建议!你知道吗</p>