Найти - Пользователи
Полная версия: Помогите исправить ошибку (квадратное уравнение)!
Начало » Python для новичков » Помогите исправить ошибку (квадратное уравнение)!
1
artem-droshnev
Помогите исправить ошибку (квадратное уравнение)

Итак попытался написать программу для нахождения корней кв. уравнения


a = float(input(“Введите a: ”))
b = float(input(“Введите b: ”))
c = float(input(“Введите c: ”))
z = (b*b-4.0*a*c)
d = sqrt(z)
x1 = 0
x2 = 0
if d>0:
x1 = ((-b) + d)/(2.0*a)
x2 = ((-b) - d)/(2.0*a)
print(x1, x2)
elif d==0:
x12= (-b)/(2.0*a)
print(x12)
else:
print(“Корней нет”)

exit=input('Нажмите ENTER')


вроде бы все не плохо(имхо=/)

но когда запускаю программу ввожу значения a, b, c и выдает вот такое:
================================
>>>
Введите a: 1.0
Введите b: -8.0
Введите c: 7.0
Traceback (most recent call last):
File “E:\python\yrav.py”, line 5, in <module>
d = sqrt(z)
NameError: name ‘sqrt’ is not defined
>>>


Не хочет считать корень. Как будто не знает команды sqrt что делать, объясните поподробней новичку.
Piton23
import math
math.sqrt(z)


PS Когда ж вы научитесь код оформлять правильно
py.user.next
неправильно записано, никакого z там не должно быть
дискриминант - это d = b * b - 4 * a * c
находишь дискриминант, а потом вычисляешь корень из дискриминанта
корень можно вычислять через возведение в степень 1/2 - это d ** 0.5, а math.sqrt(), вроде бы, может быть поскоростнее
(и когда дискриминант меньше нуля, корни у уравнения есть (в поле комплексных чисел), поэтому надо писать, что корней нет во множестве действительных чисел - “действительных корней нет”)
sanodin
http://www.ex.ua/view/14563475

Вроде в третьем уроке точь в точь такое уравнение

В .avi http://www.ex.ua/view/15390954
OverClocker
# -*- coding: utf-8 -*-
import math
a=input(u"a=")
b=input(u"b=")
c=input(u"c=")
try:
    D=b*b-4*a*c
    if D<0:
        print u"Нет решения"
    else:
        X1=(-b+math.sqrt(D))/(2*a)
        X2=(-b-math.sqrt(D))/(2*a)
        print u"X1=", X1
        print u"X2=", X2
except ZeroDivisionError:
    X=-b/c
    print u"X1,2=", X
finally:
    print u"Конец программы"
Правильно будет как то так я думаю!
fata1ex
То есть, если у нас коэффициент ‘a’ равен нулю, у нас получится два корня по-вашему? Причем корни неверные, потому что int / int = int.
a=0
b=1
c=2
X1,2= -1
Конец программы

А если ‘c’ равно нулю?
a=0
b=1
c=0
Конец программы
Traceback (most recent call last):
  File "qua.py", line 16, in <module>
    X=-b/c
ZeroDivisionError: integer division or modulo by zero

А если некорректный ввод?
a=jaja
Traceback (most recent call last):
  File "qua.py", line 3, in <module>
    a=input(u"a=")
  File "<string>", line 1, in <module>
NameError: name 'jaja' is not defined
 
a=
Traceback (most recent call last):
  File "qua.py", line 3, in <module>
    a=input(u"a=")
  File "<string>", line 0
    
    ^
SyntaxError: unexpected EOF while parsing

И блоком try-except принято оборачивать ту часть кода, которая бросает исключение, а не всю программу. Ну и про комплексные числа уже писали.

В общем, мораль в том, что даже элементарную программу написать корректно не так просто, если вы хотите, чтобы она реально работала. Именно так, стараясь добиться идеального решения, нужно развивать навыки программирования. А не написал-вродеработает-атлична.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB