2017-09-14 2 views
-9

나는 if 문을 사용하도록 요구하고 있음을 알고있다. 그러나 이것을 어떻게 할 수 있습니까?파이썬으로 이차 다항식의 근간

커맨드 라인에서 a, b, c 세 플로트를 읽고 이차 다항식 ax**2 + bx + c = 0의 근원을 계산/인쇄하는 qroots.py 프로그램을 작성하십시오. 실제 루트가 존재하는 경우, 즉 a, b, c의 값이 음수가 아닌 판별자인 b**2 − 4ac >= 0을 생성하는 경우에만 프로그램에서 처리해야합니다.

discriminant가 음수이면 프로그램은 실제 루트가 존재하지 않는다는 메시지 만 출력해야합니다.

힌트 : math.sqrt()는 숫자의 제곱근을 반환하는 내장 함수입니다.

지금까지이 있습니다

import sys 
import math 

a = float(sys.argv[1]) 
b = float(sys.argv[2]) 
c = float(sys.argv[3]) 
터미널이해야

:

qroots.py 1 -3 2

1.0 2.0

+3

신청 방법을 읽어주세요. 숙제를 해결할 사이트가 아닙니다. 당신이 한 것을 보여주세요. –

+1

힌트 : https://en.wikipedia.org/wiki/Quadratic_formula –

+1

Welcome to StackOverflow! 이 질문을하기 전에 [묻는 방법] (https://stackoverflow.com/help/how-to-ask)을 읽으셨습니까? – Jerrybibo

답변

0

먼저 읽기 명령 줄에서 입력하십시오 (힌트 : sys.argv 사용). 또한 문자열을 파이썬 숫자로 변환하는 방법을 알아야합니다.

그런 다음 b**2-4*a*c < 0을 확인하십시오. 그렇다면 실제 뿌리가 없다는 것을 ValueError에 대해 제기하십시오. 그렇지

뿌리에 대한 해결 : 내 댓글 및 @Joran 비즐리의 대답에서 설명한 기능으로 roots = (b ± sqrt(b**2-4*a*c))/(2*a)

0

절차 : 원하는 경우

import sys 
from math import sqrt 

a, b, c = sys.argv[1:] 
a = float(a) 
b = float(b) 
c = float(c) 
if b**2-4*a*c < 0: 
    print("there's no real root") 
else: 
    print((-b+sqrt(b**2-4*a*c))/(2*a), (-b-sqrt(b**2-4*a*c))/(2*a)) 

, 당신은 또한 확인할 수 있습니다 판별 제로 만있는 경우 두 솔루션 중 하나를 인쇄하십시오 (이 경우 분명히 동일합니다).