2016年9月15日 星期四

程式集訓 A005:一元二次方根

(A005) 一元二次方根 : 從命令視窗輸入一元二次方程式(AX^2+BX+C=0)的三個係數,
       若該一元二次方程式有解,請印其兩個解,若無解則印"None"。請使用double做為係數
       及解的型態。解公式為 (-B+sqrt(D))/(2A) 和 (-B-sqrt(D))/(2A)
#coding=utf8

import math
#程式集訓 A005:一元二次方根
'''
         (A005) 一元二次方根 : 從命令視窗輸入一元二次方程式(AX^2+BX+C=0)的三個係數,
         若該一元二次方程式有解,請印其兩個解,若無解則印"None"。請使用double做為係數
         及解的型態。解公式為 (-B+sqrt(D))/(2A) 和 (-B-sqrt(D))/(2A)
'''
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False

print("       (A005) 一元二次方根")
print("==================")
print("AX^2+BX+C=0: A B C?")

#==========================
n=1
while n!=0:
  a=input("輸入 A=")
  if (is_number(a) != True) :
     print ('這是不合法的輸入.  請再輸入一次...')
     n=1
  else:
     A=float(a)
     n=0
#==========================
n=1
while n!=0:
  a=input("輸入 B=")
  if (is_number(a) != True) :
     n=1
     print ('這是不合法的輸入.  請再輸入一次...')
  else:
     B=float(a)
     n=0
#==========================
n=1
while n!=0:
  a=input("輸入 C=")
  if (is_number(a) != True) :
     n=1
     print ('這是不合法的輸入.  請再輸入一次...')
  else:
     C=float(a)
     n=0

#==========================
if ( (B*B-4*A*C) >= 0 ) :
   x1 = ( -B + math.sqrt(B*B-4*A*C) ) / ( 2*A )
   x2 = ( -B  - math.sqrt(B*B-4*A*C) ) / ( 2*A )
   print("X1=",'{:6.2f}'.format(x1)," , X2=",'{:6.2f}'.format(x2))
else:

   print("無實根")



>>> 
================== RESTART: D:/程式語言 Python 入門/程式集訓/A005.py ==================
       (A005) 一元二次方根
==================
AX^2+BX+C=0: A B C?
輸入 A=1
輸入 B=-6
輸入 C=8
X1=   4.00  , X2=   2.00
>>> 
================== RESTART: D:/程式語言 Python 入門/程式集訓/A005.py ==================
       (A005) 一元二次方根
==================
AX^2+BX+C=0: A B C?
輸入 A=1
輸入 B=-5
輸入 C=-14
X1=   7.00  , X2=  -2.00
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...