2016-02-24 9 views
-2

(Так оно должно появиться, когда я его запустил.) a = 3; b = 5; c = 4 Нет решенийНужна помощь в настройке квадратного уравнения в python

До сих пор у меня это установлено на питоне, и я не знаю, что я делаю неправильно. (Примечание: мой профессор хочет, чтобы назвать главной в конце функции определяют)

import math 
import sys 
def main(): 
    print("a = ",a,";b = ",b,";c = ",c,) 
    print_quadratic_solution(3, 5, 2) 
    a = print_quadratic_solution(a) 
    b = print_quadratic_solution(b) 
    c = print_quadratic_solution(c) 

def print_quadratic_solution(a, b, c): 
    a = int(a) 
    b = int(b) 
    c = int(c) 
    discriminant = b**2 - 4*a*c 

    if discriminant < 0: 
     print("There are no solutions.") 
    elif discriminant == 0: 
     x = (-b + math.sqrt(discriminant))/(2*a) 
     print("There is a double root at", x) 
    elif discriminant > 0: 
     x1 = (-b + math.sqrt(discriminant))/(2*a) 
     x2 = (-b - math.sqrt(discriminant))/(2*a) 
     print("The first root is", x1, " and the second is", x2, ".") 

main() 

Результаты выходят так:

The first root is -0.6666666666666666 and the second is -1.0 . 
Traceback (most recent call last): 
    File "C:\Users\Juan1\Documents\Computer Science 1300\EliAssignment6.py", line 23, in <module> 
    main() 
    File "C:\Users\Juan1\Documents\Computer Science 1300\EliAssignment6.py", line 5, in main 
    print("a = ",a,";b = ",b,";c = ",c,) 
NameError: name 'a' is not defined 

Так кто-то может мне помочь?

ответ

0

Ошибка NameError: name 'a' is not defined означает, что она говорит. Переменная a не имеет значения перед ее назначением. Поэтому вы не можете записать его в print.

+0

Правильно, так мне нужно будет идентифицировать его перед оператором печати или как я это сделаю? – Elizabeth

+0

Ты только что сказал! 'a' должен иметь присвоенное значение ** перед ** печатью. – vimsical

+0

Хорошо, так много смысла! Теперь я понимаю, спасибо! – Elizabeth

0

Это хорошая домашняя работа, и я думаю, что это упражнение должно научить вас расшифровать сообщения об ошибках. Я бы не отказался, когда вы ошибетесь сразу. Однако я бы дал вам это объяснение для сообщения об ошибке.

The first root is -0.6666666666666666 and the second is -1.0 . 
Traceback (most recent call last): 
    File "C:\Users\Juan1\Documents\Computer Science 1300\ElizabethZamudioAssignment6.py", line 23, in <module> 
    main() 
    File "C:\Users\Juan1\Documents\Computer Science 1300\ElizabethZamudioAssignment6.py", line 5, in main 
    print("a = ",a,";b = ",b,";c = ",c,) 
NameError: name 'a' is not defined 

Следующая

NameError : name 'a' is not defined 

Средства где-то в переменном коде a получает доступ/используется, прежде чем ему присваивается значение. Итак, в момент выполнения ваш компьютер не знает, что такое a.

Теперь, где эта точка исполнения? Чтобы это знать, вы должны выровнять строки. Это то, что является Traceback

Traceback (most recent call last): 
    File "C:\Users\Juan1\Documents\Computer Science 1300\ElizabethZamudioAssignment6.py", line 23, in <module> 
    main() 
    File "C:\Users\Juan1\Documents\Computer Science 1300\ElizabethZamudioAssignment6.py", line 5, in main 
    print("a = ",a,";b = ",b,";c = ",c,) 

По вашему TRACEBACK, ваш компьютер пытался запустить функцию main(). Вызов этой функции была сделана в line number 23 из File "C:\Users\Juan1\Documents\Computer Science 1300\ElizabethZamudioAssignment6.py"

В этой main функции одного и того же файла, line 5 имеет NameError.

Теперь вы видите, что вы назначаете/начинаете переменную a в функции main() перед строкой 5. Таким образом, ваше сообщение об ошибке пытается сказать вам инициировать это значение. Ваш компьютер не знает в строке 5, что такое a.

Надеюсь, это поможет.

+0

Я вижу другие проблемы с тем, как происходят ваши вызовы функций. Вероятно, вам тоже нужно это исправить. Я хотел бы услышать от вас и то, что вы понимаете, прежде чем я напишу слишком много. – Vasif

+0

Я вижу, что я сделал неправильно сейчас. Имеет смысл! Спасибо! – Elizabeth