# e (數學常數) 歐拉數
歐拉數 e=1+1/1! + 1/2! +......+1/n!
首先要把 n! 先解決
n!= 1x2x3x......xn
先來驗證5!
5!=1x2x3x4x5 = 120
n = 1 for y in range(1,6,1): for i in range(1, y + 1): n = n * i print(f'{i}! = {n}') n = 1 #***************執行結果********************** 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 |
再來就是將每個階層倒數相加就可以了
n1 = 0 n = 1 for y in range(10, 101, 10): for i in range(1, y + 1): n = n * i n1 = n1 + (1 / n) print(f'{i} = {n1 + 1}') n1 = 0 n = 1 #***************執行結果********************** 10 = 2.718281801146385 20 = 2.7182818284590455 30 = 2.7182818284590455 40 = 2.7182818284590455 50 = 2.7182818284590455 60 = 2.7182818284590455 70 = 2.7182818284590455 80 = 2.7182818284590455 90 = 2.7182818284590455 100 = 2.7182818284590455 |
#求最大公約數
可以使用 輾轉相除法
輾轉相除法就是要尋找最大公約數的兩個數字進行重複除法,直到最後得到餘數為0
下面例子:試找出40和64的最大公約數
64 ÷ 40 = 1 .. 24
40 ÷ 24 = 1 .. 16
24 ÷ 16 = 1 .. 8
16 ÷ 8 = 2 .. 0
得到餘數為0就可以了。最後一個餘數是8,因此40和64的最大公約數就是8。
這時就要用到無窮迴圈,注意break使用時機,避免無法跳出迴圈
m=int(input('請輸入第一個數字: ')) n=int(input('請輸入第二個數字: ')) while True: if(m>n): if (n==0): print(f'最大公約數是 {m}') break else: x=m%n m=n n=x else: if(m==0): print(f'最大公約數是 {n}') break else: temp=m m=n n=temp #***************執行結果********************** 請輸入第一個數字: 16 請輸入第二個數字: 40 最大公約數是 8 |
求解一元二次方程式
import math X1=0 X2=0 A=int(input('請輸入 X^2 :')) B=int(input('請輸入X :')) C=int(input('請輸入整數 :')) if(A==0): X1=0 X2=(-1*C)/B print(f'X={X2}') else: b=-1*B X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A) X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A) print(f'X={X1} 或是 {X2}') #***************執行結果********************** 請輸入 X^2 :1 請輸入X :7 請輸入整數 :12 X=-3.0 或是 -4.0 |
當 b^2-4ac 等於負值時程式會發生錯誤,因為負值無法開根號
避免錯誤可以用下列方式
1. 錯誤訊息處理
當 b^2-4ac 等於負值時程式會發出ValueError錯誤訊息,所以可以用 try 來攔截
try: X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A) X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A) except ValueError: print ('輸入的數值有誤,無法計算,請重新輸入') else: print(f'X={X1} 或是 {X2}') |
2. 邏輯判斷,當 b^2-4ac 等於負值時,就顯示訊息,並重新輸入
while True: A=int(input('請輸入 X^2 :')) B=int(input('請輸入X :')) C=int(input('請輸入整數 :')) if ((B*B-(4*A*C))>1): break else: print('輸入的數值有誤,無法計算,請重新輸入') |
修改後的完整程式:
import math X1=0 X2=0 while True: A=int(input('請輸入 X^2 :')) B=int(input('請輸入X :')) C=int(input('請輸入整數 :')) if ((B*B-(4*A*C))>1): break else: print('輸入的數值有誤,無法計算,請重新輸入') if(A==0): X1=0 X2=(-1*C)/B print(f'X={X2}') else: b=-1*B try: X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A) X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A) except ValueError: print ('輸入的數值有誤,無法計算,請重新輸入') else: print(f'X={X1} 或是 {X2}') |
沒有留言:
張貼留言