Я пытаюсь решить задачу программирования, и у меня возникли проблемы.Задание гласит:
Рассмотрим обычную формулу для вычисления решения квадратного уравнения: ax2 + bx + c = 0, заданное как x = sqrt (b ± b ^ 2−4ac / 2a). Написать программу для чтения значений.для a, b и c из командной строки.Используйте исключения для обработки пропущенных аргументов и обработки неверного ввода, где b ^ 2-4ac <0 </p>
Моя программа выглядит следующим образом:
from math import sqrt
import sys
try:
a = float(sys.argv[1])
b = float(sys.argv[2])
c = float(sys.argv[3])
bac = b**2 - 4*a*c
if bac < 0:
raise ValueError
except IndexError:
while True:
input("No arguments read from command line!")
a = float(input("a = ? "))
b = float(input("b = ? "))
c = float(input("c = ? "))
bac = b**2 - 4*a*c
if bac > 0:
break
if bac < 0:
while True:
print("Please choose values of a,b,c so\
that b^2 - 4ac > 0")
a = float(input("a = ? "))
b = float(input("b = ? "))
c = float(input("c = ? "))
bac = b**2 - 4*a*c
if bac > 0:
break
except ValueError:
while True:
input("Please choose values of a,b,c so that b^2 - 4ac > 0")
a = float(input("a = ? "))
b = float(input("b = ? "))
c = float(input("c = ? "))
if bac > 0:
break
for i in range(-1,2,2): # i=-1, next loop > i=1
x = (b + i*sqrt(bac)) / (2*a)
print("x = %.2f"%(x))
Кажется, что работает нормально, но вв приведенном ниже примере это не так:
terminal >
python quadratic_roots_error2.py
No arguments read from command line!
a = ? 1
b = ? 1
c = ? 1
Please choose values of a,b,c so that b^2 - 4ac > 0
a = ? 5
b = ? 2
c = ? -3
No arguments read from command line!
a = ? 5
b = ? 2
c = ? -3
x = -0.60
x = 1.00
Почему программа выдает сообщение «Нет аргументов, прочитанных из командной строки!»?Я хочу, чтобы программа печатала каждое решение, где b ^ 2-4ac> 0, и всякий раз, когда b ^ 2-4ac <0, я хочу сообщение «Пожалуйста, выберите значения a, b, c, чтобы b ^ 2 - 4ac> 0»быть напечатанным, как оно делает.