题目:
求方程一元二次ax^2+bx+c=0的实数根。 要求:写程序计算方程的根。
对a=0和b^2-4ac<0进行异常处理。
输入格式:
一行输入三个数
输出格式:
保留一位小数,从小到大输出。
输入样例1:
在这里给出一组输入。例如:
1 6 5
输出样例1:
在这里给出相应的输出。例如:
-5.0 -1.0
输入样例2:
1 4 5
输出样例2:
No values
输入样例3:
0 4 5
输出样例3:
a不能取0
代码展示:
import math
def calculate_roots(a, b, c):
if a == 0:
raise ValueError("a不能取0") #e
delta = b ** 2 - 4 * a * c
# 根据判别式的值处理根的情况
if delta > 0:
# 两个不同的实数根
root1 = (-b - math.sqrt(delta)) / (2 * a)
root2 = (-b + math.sqrt(delta)) / (2 * a)
return root1, root2
elif delta == 0:
# 两个相同的实数根
root = -b / (2 * a)
return root, root
else:
# 没有实数根
raise ValueError("No values") #e
def main():
try:
a, b, c = map(int, input().split())
try:
root1, root2 = calculate_roots(a, b, c)
print(f"{root1:.1f} {root2:.1f}")
except ValueError as e:
print(e)
except ValueError: # 输入非数字时的异常处理
print("No values")
if __name__ == "__main__":
main()