請共教育部閩南語常用辭典開--咧,隨時會當查。
我佇教囡仔小學 ê 數學時,有時想欲驗算一遍。毋過,咱這馬雖然有計算機,毋過,伊無法度算分數, 拄好我佇耍 Python, 來揣看覓 Python 有法度做--無?
這 "分數" 毋是老師佇共學生拍分數,是二分一 (1/2),三分二(2/3) 這種分數。
參考文章: Dealing with fractions in Python
基礎
首先,咱愛 uì fractions 這咧 Module 共 Fraction 這个函式搝--入來:from fractions import Fraction
Fraction 佇英文都是 "分數" ê 意思, 頭一咧參數是分子,第二个是分母,譬如講, 3/12 是寫做:
>>> Fraction(3, 12)
Fraction(1, 4)
Fraction(1, 4)。 1/4 是 3/12 化簡過來ê。
若欲看落去較直覺,也都是和數學寫的 3/12 較相仝,你嘛會使用:
若欲看落去較直覺,也都是和數學寫的 3/12 較相仝,你嘛會使用:
>>> Fraction('3/12')
Fraction(1, 4)
你嘛會使共小數(佇電腦伊是用浮點數表示)成做分數:
>>> Fraction(2.5)
Fraction(5, 2)
雖然伊會自動共浮點數(float)轉換, 毋過驚有精差(電腦計算小數有伊的限制), 也是用單引號共伊挾起來較安全:
>>> Fraction('2.5')
Fraction(5, 2)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> Fraction('1.1')
Fraction(11, 10)
約分
咱若有看較斟酌--ê ,頂仔的例,伊會自動共分數約分,也就是共伊化做上簡單 ê 分數:>>> Fraction(153, 272)
Fraction(9, 16)
通分
你若是共兩的分數加--起來抑是減--落去, 伊會自動通分:
>>> Fraction(1, 2) + Fraction(3, 4)
Fraction(5, 4)
按呢有讚--無? 閣較讚个是, 若是一个分數和整數相加--起來, 伊嘛會自動轉做分數:
>>> Fraction(5, 16) + 3
Fraction(53, 16)
## 加 .0 佇後壁, 伊都共 3.0 當做浮點數囉!
>>> Fraction(5, 16) + 3.0
3.3125
賰的二元運算 (Binary Operations)
除了加,減,乘佮除嘛是會用得:
>>> Fraction(5, 16) - Fraction(1, 4)
Fraction(1, 16)
>>> Fraction(1, 16) * Fraction(3, 16)
Fraction(3, 256)
>>> Fraction(3, 16) / Fraction(1, 8)
Fraction(3, 2)
共分子抑是分母提出來
你若是干焦欲挃分子,會使用 .numerator 這个方法。若是分母, 用 .denomintor
>>> f = Fraction(221, 234) + Fraction(1, 2)
>>> f.numerator
13
>>> f.denominator
9
共假分數 (imprpoer fraction) 成做帶分數 (mixed numeral)
Fraction() 所算出來个結果,攏是分數,無論是真分數(proper fraction) 抑是假分數 (improper fraction),有時咱愛家己轉換:
>>> int(73/14)
5 # 這是整數部分
>>> str(Fraction(73%14, 14))
'3/14' # 這是分數部分
寫一咧小學生看有ê程式
當然,小學生按呢共in講可能嘛是傷複雜,你會用寫簡單 ê 函式來轉換:
from fractions import Fraction def Frac(x): # 單純化簡 return str(Fraction(x)) def FracOp(x, op, y): # +, -, *, / 四種運算 if op == '+': result = Fraction(x) + Fraction(y) elif op == '-': result = Fraction(x) - Fraction(y) elif op == '*': result = Fraction(x) * Fraction(y) elif op == '/': result = Fraction(x) / Fraction(y) return str(result) def FracMix(x): # 共假分數成做帶分數 num, dem = x.split('/') i = int(int(num)/int(dem)) dem = Fraction(int(num)%int(dem), int(dem)) return str(i)+'+'+str(dem)
咱來奕看覓:
>>> from myfrac import Frac,FracOp,FracMix >>> FracMix('10/3') '3+1/3' # 這是帶分數 >>> Frac('12/24') '1/2' # 這是約分 >>> FracOp('12/24', '+', '3/9') #這是加法,自動通分 '5/6' >>> FracOp('12/24', '/', '3/9') #這是除法 '3/2'
按呢看來, 都共數學式較sîng,都賰 Frac, FracOp, FracMix 三的函式來使用都好阿!
咱若是會共 jupyter 敆做伙使用,無定著是一種袂䆀 ê 教材呢,因為佇線頂,袂曉 python ê 人,干焦拍開網頁, 共事先準備好个稿掠入來,就會當用這三的函式阿,下一回來介紹 jupyter!
咱若是會共 jupyter 敆做伙使用,無定著是一種袂䆀 ê 教材呢,因為佇線頂,袂曉 python ê 人,干焦拍開網頁, 共事先準備好个稿掠入來,就會當用這三的函式阿,下一回來介紹 jupyter!
沒有留言:
張貼留言