/*無聊時候寫的,我想每個入門的編程都會拿着個練手把,多的不說,我們來談談正經的——此功能實現一元二次方程求解,復數情況,輸入字符處理判斷是否為數字*/
import os
import math
import cmath
/*自定義mx函數,求解,*/
def mx(a,b,c):
mm = (b ** 2) - (4 * a * c)
if mm > 0:
print('此函數有兩個解')
x1=(-b+math.sqrt(mm))/(2*a)
x2 = (-b - math.sqrt(mm)) / (2 * a)
print("{:.0f}x**2+{:.0f}x+{:.0f}的結果為:x={:.0f} 和 x={:.0f}".format(a,b,c,x1,x2))
elif mm ==0:
print('此方程只有一個解')
print("{:.0f}x**2+{:.0f}x+{:.0f}的結果為:x={:.0f}".format(a, b, c, (-b+math.sqrt(mm))/(2*a)))
elif mm <0:
x1=(-b+cmath.sqrt(mm))/(2*a)
x2 = (-b - cmath.sqrt(mm)) / (2 * a)
print("{:.0f}x**2+{:.0f}x+{:.0f}的結果為:x={:.0f} 和 x={:.0f}".format(a, b, c, x1, x2))
else :
print('無解')
/*自定義is_number函數,判斷用戶輸入的字符類型是否為數字,是為true不是為false。*/
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
/*自定義panduan函數,如果用戶輸入的字符類型為數字,返回數字,如果不是數字,則提示要求重新輸入知道輸入的為字符為止,(提示這里用while來實現循環,如果用戶輸入的一直不是數字,將會一直走不出while,最好用or一下用戶輸入的最大次數,即是用戶輸入的最大次數)。*/
def panduan(xx):
if is_number(xx)==True:
return xx
else:
while is_number(xx)==False:
print('不是數字,請再次輸入')
cc =input("請輸入一個數:")
if is_number(cc)==True:
break
return cc
/*主程序——input輸入數字,先用is_number判斷是否為數字,如果不是,返回false,再用panduan來再次依靠is_number的值,來進行判斷為false則要求用戶重新輸入,為true則返回用戶輸入的數字,其中在python中input的數字為字符型,需要用float來轉換成數字。 */
print('此程序用於計算一元二次方程解,請依次輸入三個數')
zz=input("是否要開始計算:yes/任意退出:")
while zz =='yes':
a=float(panduan(input("請輸入第一個數:")))
b=float(panduan(input("請輸入第二個數:")))
c=float(panduan(input("請輸入第三個數:")))
mx(a,b,c)
zz = input("是否還要繼續計算:yes/no——:")
if zz!='yes':
qq =input('確認退出計算界面?yes/任意鍵繼續')
if qq == 'yes':
print('感謝使用。' ,end="")
else:
zz=input("是否要開始計算:yes/任意退出:")
else:
zz = input("是否繼續計算:yes/no——:")
