我写了一个一元二次方程,结果出点问题,自己也找不到,求坛友解答下!
本帖最后由 z1991627 于 2021-1-31 10:55 编辑英文很差,关于自定义函数那块就别嘲笑...
#写一个一元二次方程;一元二次方程经过整理都可化成一般形式ax2+bx+c=0(a≠0)元二次方程经过整理都可化成一般形式ax2+bx+c=0(a≠0)
#python 3.7
import math
def yiyuanerci(a,b,c): #定义一个一元二次的函数!
s = math.sqrt(b*b-4*a*c) #开根号
x = (0-b+s)/2*a #建立x的结果1
x1 = (0-b-s)/2*a #建立x的结果2
print(x,x1) #输出返回结果
return #返回函数
print('这是一个一元二次方程') #说明代码用处
a = int(input("请输入a的值(a≠0):"))
b = int(input("请输入b的值:"))
c = int(input("请输入c的值:"))
if a == 0:#首先判断a是否等于0,
print("请重新输入a的值:")
a = int(input("请输入a的值(a≠0):"))
else:
yiyuanerci(a,b,c)
下面是网上查询的结果:
根据坛友的解答,已结修改,谢谢大家!
2*a要加括号吧 本帖最后由 山无〇 于 2021-1-31 10:02 编辑
你没有判断 b*b-4*ac 与0 的关系,也就是有解的话 应是 b*b-4*ac>=0. jin3530 发表于 2021-1-31 09:59
2*a要加括号吧
我也自己刚刚找到了 写程序要会调试呀,如果是用VS CODE写的话按F9跟踪一下看看就知道了,不过感觉2楼是正解呀 x = (-b+s) / (2*a) #建立x的结果1
x1 = (-b-s )/ (2*a) #建立x的结果2
-0.04032522475023122 -4.959674775249769
还得注意判断s大小 最后结果还要保留有效数字啊,python计算的结果精度不是很准确 thepoy 发表于 2021-1-31 10:19
最后结果还要保留有效数字啊,python计算的结果精度不是很准确
谢谢我重新改下 BananaProject 发表于 2021-1-31 10:11
x = (-b+s) / (2*a) #建立x的结果1
x1 = (-b-s )/ (2*a) ...
的确我重新改写下,可以这显示结果处修改 不错不错,学习了
页:
[1]
2