z1991627 发表于 2021-1-31 09:54

我写了一个一元二次方程,结果出点问题,自己也找不到,求坛友解答下!

本帖最后由 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)


下面是网上查询的结果:


根据坛友的解答,已结修改,谢谢大家!

jin3530 发表于 2021-1-31 09:59

2*a要加括号吧

山无〇 发表于 2021-1-31 10:00

本帖最后由 山无〇 于 2021-1-31 10:02 编辑

你没有判断   b*b-4*ac 与0   的关系,也就是有解的话   应是   b*b-4*ac>=0.

z1991627 发表于 2021-1-31 10:01

jin3530 发表于 2021-1-31 09:59
2*a要加括号吧

我也自己刚刚找到了

ccwuax 发表于 2021-1-31 10:06

写程序要会调试呀,如果是用VS CODE写的话按F9跟踪一下看看就知道了,不过感觉2楼是正解呀

BananaProject 发表于 2021-1-31 10:11

x = (-b+s) / (2*a)            #建立x的结果1
x1 = (-b-s )/ (2*a)         #建立x的结果2


-0.04032522475023122 -4.959674775249769

还得注意判断s大小

thepoy 发表于 2021-1-31 10:19

最后结果还要保留有效数字啊,python计算的结果精度不是很准确

z1991627 发表于 2021-1-31 10:21

thepoy 发表于 2021-1-31 10:19
最后结果还要保留有效数字啊,python计算的结果精度不是很准确

谢谢我重新改下

z1991627 发表于 2021-1-31 10:22

BananaProject 发表于 2021-1-31 10:11
x = (-b+s) / (2*a)            #建立x的结果1
x1 = (-b-s )/ (2*a)            ...

的确我重新改写下,可以这显示结果处修改

yuyang0760 发表于 2021-1-31 10:25

不错不错,学习了
页: [1] 2
查看完整版本: 我写了一个一元二次方程,结果出点问题,自己也找不到,求坛友解答下!