【Python笔记】2020年7月22日练习=[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解]
学习教程:廖雪峰-Python教程-函数-函数定义
学习记录:[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解]
学习心得:
1、对问题进行判断分析后再下手。
一元二次方程需分析根的情况,当△大于零时,有两个根;当△等于零时,有一个根;当△小于零时,无解。
需三种情况进行判断,再进行计算,再打印输出结果。
2、在原题基础之上我增加的问题
①用户输入a,b,c三个值,更加人性化
②对返回的根进行判断,判断根为整数(int)还是浮点数(float)。若为整数则直接返回打印输出,若为浮点数则强制保留2位小数点。
3、额外吸收内容
①bool类型可直接用 int() 强制转换为0和1
1 a = 1/3 2 Tex = int(isinstance(a, float))
以上打印结果为 1。
isinstance() 是Python内置的数据类型检查函数
②round() 函数:返回浮点数x的四舍五入值
a = 1/3
print(round(a, 2))
以上打印结果为 0.33
以下是我的练习代码:
1 # 定义一个函数quadratic(a, b, c),接收3个参数 2 # 返回一元二次方程 ax^2 + bx +c = 0 的两个解 3 import math 4 5 # 求根函数 6 def quadratic(a, b, c): 7 # 求△ 8 det = b**2-4*a*c 9 # 判断△ 大于零 10 if det > 0: 11 x1 = (-b+math.sqrt(det))/(2*a) 12 x2 = (-b-math.sqrt(det))/(2*a) 13 return x1, x2 14 # 判断△ 等于零 只有一个解 15 elif det == 0: 16 x1 = x2 = (-b+math.sqrt(det)) / (2*a) 17 return x1, x2 18 # 判断△ 小于零 无解 19 else: 20 print('测试失败!') 21 22 # 判断根的数据类型,为int还是float,若为float则保留2位小数 23 def q_float(nx): 24 Tex = int(isinstance(nx, float)) 25 if Tex == 1: 26 return round(nx, 2) 27 else: 28 return int(nx) 29 30 # 输入abc 31 a = int(input("请输入第一个数:")) 32 b = int(input("请输入第二个数:")) 33 c = int(input("请输入第三个数:")) 34 35 # 接收根的值 36 nx1, nx2 = quadratic(a, b, c) 37 38 # 调用函数,直接打印输出 39 print("Quadratic(a, b, c)=", q_float(nx1), q_float(nx2))