2016-07-11 4 views
0

저는 코딩의 초보자입니다. 파이썬을 사용하여 2 차 방정식 계산기를 만들려고합니다.if 문에서 부울 연산자 사용

while True: 
    print(""" 
     Welcome to DJIGURDA Supreme Quadratic Calculator 
     Please enter three values in the form of /'ax^2 + bx +c/'. """) 
    a = input("a (first constant)") 
    b = input("b (second constant)") 
    c = input("c (third constant)") 

    if not a.isalpha and not b.isalpha and not c.isalpha: 
     d = (float(b)**2) - (4 * float(a) * float(c)) 
     print(d) 
     if d >= 0: 
      x_1 = (float(-b) + (d**0.5))/(2*float(a)) 
      x_2 = (float(-b) - (d**0.5))/(2*float(a)) 
      print("The first variable is equal to %s./n The second variable is equal to %s")[str(x_1), str(x_2)] 
     else: 
      print("No real roots.") 
    else: 
     print("Please enter numerical values.") 

이 코드는 "Please enter numerical values." 코드가 첫 번째 "if"문을 지나치지 않는 이유는 무엇입니까?

+0

대괄호. 각 부울'if' 섹션에 주위에 대괄호'()'가 있어야합니다. – Tim

+0

'(a.isalpha()가 아니라 if (b.isalpha()가 아님) 그리고 (c.isalpha()가 아님)' – Tim

+7

'a.isalpha()'가 필요합니다. –

답변

8

당신은 그 메소드를 호출하지 않는 :

>>> bool(''.isalpha) 
True 

그래서 not a.isalpha (다른 사람들이) 항상 False로 평가됩니다 : 파이썬에서 메소드 나 함수가 truthy 값이 있는지

c.isalpha() 
#  ^^ 

주 조건이 결코 넘어 가지 않을 것입니다.

+0

숫자 입력이 필요하기 때문에 정확하게 그 일을하려고합니다. –

0

a.isalpha를 대괄호로 묶어야합니다. - a.isalpha()와 같이 메소드를 호출하는 반면 d 아니야. 당신은 내가 내 앞에 방법을 가지고있는 것처럼, 내 대답에 동의하고 그들의 동의하지 마십시오 나 그것을 수행해야와 C뿐만 아니라

UPDATE 난 그냥 실현 죄송합니다

사람이 대답했습니다!