Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2012 19:53:43

artem-droshnev
Зарегистрирован: 2012-07-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите исправить ошибку (квадратное уравнение)!

Помогите исправить ошибку (квадратное уравнение)

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


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 что делать, объясните поподробней новичку.

Отредактировано artem-droshnev (Июль 24, 2012 19:54:17)

Офлайн

#2 Июль 24, 2012 20:04:13

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Помогите исправить ошибку (квадратное уравнение)!

import math
math.sqrt(z)


PS Когда ж вы научитесь код оформлять правильно

Офлайн

#3 Июль 25, 2012 01:15:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Помогите исправить ошибку (квадратное уравнение)!

неправильно записано, никакого z там не должно быть
дискриминант - это d = b * b - 4 * a * c
находишь дискриминант, а потом вычисляешь корень из дискриминанта
корень можно вычислять через возведение в степень 1/2 - это d ** 0.5, а math.sqrt(), вроде бы, может быть поскоростнее
(и когда дискриминант меньше нуля, корни у уравнения есть (в поле комплексных чисел), поэтому надо писать, что корней нет во множестве действительных чисел - “действительных корней нет”)



Офлайн

#4 Июль 25, 2012 16:40:54

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Помогите исправить ошибку (квадратное уравнение)!

http://www.ex.ua/view/14563475

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

В .avi http://www.ex.ua/view/15390954

Отредактировано sanodin (Июль 25, 2012 22:08:07)

Офлайн

#5 Июль 27, 2012 06:17:48

OverClocker
Зарегистрирован: 2012-07-13
Сообщения: 4
Репутация: +  0  -
Профиль   Адрес электронной почты  

Помогите исправить ошибку (квадратное уравнение)!

# -*- 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"Конец программы"
Правильно будет как то так я думаю!



Офлайн

#6 Июль 27, 2012 07:15:42

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Помогите исправить ошибку (квадратное уравнение)!

То есть, если у нас коэффициент ‘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 принято оборачивать ту часть кода, которая бросает исключение, а не всю программу. Ну и про комплексные числа уже писали.

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



Отредактировано fata1ex (Июль 27, 2012 07:25:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version