發表文章

python自訂函數EXCEL PV和繪圖

圖片
python tkinter create_line利用tkinter繪圖 def pv(r,n,m,f):#黃俊珵函數參數r,n,m,f p = m/r*(1 - 1/(1+r)**n)+f/(1+r)**n return p#執行函數的結果傳回去 n=float(input('期數: '))#要計算轉為實數real nubers m=float(input('收付: '))#浮點點float f=float(input('終值: ')) for i in range(1,10):#迴圈 r = i*0.01 x=pv(r,n,m,f) print('利率 ', r ,'價格 ', x) import tkinter as tk#輸入tkinter繪圖 root = tk.Tk() root.title('劉任昌python tkinter') root.geometry('600x300')#寬度width改成600 canvas = tk.Canvas(root, width=600, height=300) # 加入 Canvas 畫布 canvas.pack() x, y = 0, 0 canvas.create_line(0, 200, 500, 200, width=3,fill='black') for x in range(1, 200): x1 = x+1 y1 = 200 - pv(x1,n,m,f)*200 canvas.create_line(x, y, x1, y1, width=5,fill='blue') canvas.pack() x = x1 y = y1 root.mainloop() SPYDER執行結果

期末考Javascript與Python計算內部報酬率IRR

圖片
躉繳 第1期 第2期 第3期 注意,包含首期躉繳的現金流量都大於0。 輸出: 報酬率: 淨現值: 迴圈次數: 黃俊珵向項柏綱學習程式設計程式碼如下 <STYLE> H1{margin: 0; padding: 20px 0; color: #000000; text-shadow: 2PX 2PX yellow;} .Takming{border: 20px outset red;background-color: green;color: white;} .pmt{width: 60pt; height: 20pt;background-color: GRAY;color: white;} </STYLE> <SCRIPT>//註解分享過程重點,貢獻,註解給人看,註解維護MAINTAIN程式碼 const period=4;//給定期數四期 const maxerror = 0.000000001; //要求的精確度 var payment = new Array(period); function IRR() {   var a = 0;//TRY報酬率是否=0   var b = 1;//TRY報酬率是否=1   var c;//如果不是上面的a,b,就測試c=(a+b)/2   var f;   var gap=10;   var loopNumber = 0;   for (var i=0; i<period; i++)     payment[i]=document.getElementsByClassName("pmt")[i].value;   f = npv(a);   if ( f==0 )       document.getElementById("irr").innerHTML = "內部報酬率等於0.";   else if ( f<0 )     document.getElementById("irr"...

周偉玲Python與Javascript與EXCEL IRR函數比較

圖片
嵌入影片 pmt = [0,0,0,0] #周偉玲程式設計586設定串列list pmt[0]=float(input('躉繳金額: '))#float函數轉化為實數(浮點數) for nper in range(1,4): pmt[nper] = float(input('第'+str(nper)+'期回收: ')) def npv(rate): y = - pmt[0] for j in range(1,4): y = y + pmt[j]/(1+rate)**j return y a, b, gap, f = 0.0, 1.0, 9.0, 9.0 maxerror = 0.000001 loopNumber = 1 while (gap > maxerror and abs(f) > maxerror and loopNumber maxerror and gap > maxerror): if ( f>0 ): a = c else: b = c gap = b-a; print('周偉玲報酬率: ', c) print('周偉玲淨現值: ', f) print('周偉玲迴圈次數: ', loopNumber) 心得 被使用最多的程式語言JAVASCRIPT因為利用瀏覽器BROWSER就可以執行,利用手機就可以撰寫與執行程式碼CODE。最流行、最容易學習的程式語言是PYTHON利用SPYDER執行,上網利用雲端的解譯COLAB

Javascript與Python數值方法

PYTHON計算現值PRESENT VALUE程式碼 def computePV(): #python def函數: {} r = float(input('輸入利率: '))#float轉為實數 n = float(input('輸入期數: ')) m = float(input('輸入每期金額: ')) f = float(input('輸入終值: ')) pvif = 1/(1+r)**n pv = (1-pvif)*m/r + f * pvif print('現值等於 ',pv) #前面我們用Javascript這裡python #function: def #{區段} 同一個縮排indent同一個區段 computePV() 我會使用上面的PYTHON也會使用下面的JAVASCRIPT 月利率y(rate) 期數n(nper) 每月還款金額(pmt) 終值f(fv) 參考劉任昌金融市場講義https://drive.google.com/file/d/17z6UZgN5fC2XCO1L8_BQs57dgQXzbwou/view?usp=sharing 劉任昌學習HTML+CSS+JavaScript程式碼

Javascript的輸出字體.font與fillStyle與fillText

圖片
Javascript在網頁就可以執行不需要開啟Spyder sin執行 cos執行 橫軸 以上程式碼 <style>BUTTON{BORDER:GREEN 5PX SOLID;BORDER-RADIUS:30PX;}</style> <h1>Javascript在網頁就可以執行不需要開啟Spyder</h1> <button onclick="LHsin()">sin執行</button> <button onclick="LHcos()">cos執行</button> <button onclick="xLine()">橫軸</button> <canvas height="400" id="my" style="background: black;" width="1200"></canvas> <script> var c = document.getElementById("my"); var cty = c.getContext("2d"); var g = 0.01;//增加一個廣域變數,用在下面的Math.sin(g*x); var h = 195; function LHsin() { var x = 0; var y = 200; cty.beginPath();  cty.lineWidth = 5;  cty.moveTo(x,y); while (x < 1000){   x = x + 1;   y = 200 - h * Math.sin(g*x);   cty.lineTo(x, y);   cty.strokeStyle = "yellow";   cty.stroke();    }; } function LHcos() { var x = 0; var y = 200-h;//上面的sin是y =200這裡要改掉 cty.beginPath();  cty.l...

三個Javascript函數sin,cos與canvas.font

Javascript在網頁就可以執行不需要開啟Spyder sin執行 cos執行 橫軸 以上程式碼 <style>BUTTON{BORDER:GREEN 5PX SOLID;BORDER-RADIUS:30PX;}</style> <h1>Javascript在網頁就可以執行不需要開啟Spyder</h1> <button onclick="LHsin()">sin執行</button> <button onclick="LHcos()">cos執行</button> <button onclick="xLine()">橫軸</button> <canvas height="400" id="my" style="background: black;" width="1200"></canvas> <script> var c = document.getElementById("my"); var cty = c.getContext("2d"); var g = 0.01;//增加一個廣域變數,用在下面的Math.sin(g*x); var h = 180; function LHsin() { var x = 0; var y = 200; cty.beginPath();  cty.lineWidth = 5;  cty.moveTo(x,y); while (x < 1000){   x = x + 1;   y = 200 - h * Math.sin(g*x);   cty.lineTo(x, y);   cty.strokeStyle = "yellow";   cty.stroke();    }; } function LHcos() { var x = 0; var y = 200-h;//上面的sin是y =200這裡要改掉 cty.beginPath();  cty.l...

python自訂函數EXCEL PV和繪圖

圖片
python tkinter create_line利用tkinter繪圖 def pv(r,n,m,f):#劉任昌函數參數r,n,m,f p = m/r*(1 - 1/(1+r)**n)+f/(1+r)**n return p#執行函數的結果傳回去 n=float(input('期數: '))#要計算轉為實數real nubers m=float(input('收付: '))#浮點點float f=float(input('終值: ')) for i in range(1,10):#迴圈 r = i*0.01 x=pv(r,n,m,f) print('利率 ', r ,'價格 ', x) import tkinter as tk#輸入tkinter繪圖 root = tk.Tk() root.title('劉任昌python tkinter') root.geometry('600x300')#寬度width改成600 canvas = tk.Canvas(root, width=600, height=300) # 加入 Canvas 畫布 canvas.pack() x, y = 0, 0 canvas.create_line(0, 200, 500, 200, width=3,fill='black') for x in range(1, 200): x1 = x+1 y1 = 200 - pv(x1,n,m,f)*200 canvas.create_line(x, y, x1, y1, width=5,fill='blue') canvas.pack() x = x1 y = y1 root.mainloop() SPYDER執行結果

Python三角函數製作Youtube影片

Python三角函數製作Youtube影片

Javascript執行三角函數繪圖

Javascript在網頁就可以執行不需要開啟Spyder 黃俊珵執行 以上程式碼 <STYLE>BUTTON{BORDER:GREEN 5PX SOLID;BORDER-RADIUS:30PX;}</STYLE> <h1>Javascript在網頁就可以執行不需要開啟Spyder</h1> <button onclick="LH()">黃俊珵執行</button> <canvas height="400" id="my" style="background: black;" width="1200"></canvas> <script> function LH() { var c = document.getElementById("my"); var cty = c.getContext("2d"); var ctz = c.getContext("2d"); var x = 0; var y = 200; var z = 10; var h = 100; cty.beginPath(); cty.lineWidth = 5; cty.moveTo(x,y); while (x < 1000){ x = x + 1; y = 200 - h * Math.sin(0.2*x); cty.lineTo(x, y); cty.strokeStyle = "yellow"; cty.stroke(); }; } </script>

黃俊珵Javascript物件導向Python物件導向

圖片
物件導向程式設計 Javascript指令new Constructor產生新的instance案例 s1.shares.toString()=案例sa的屬性shares內建方法toString()轉成字串,原來的數字被轉成字串string才可以和其他字串相加 Javascript程式碼 <DVI ID='cat'></DVI> <SCRIPT> class Stock{ //宣告類別 constructor(code, shares, price){ this.code = code; this.shares = shares; this.price = price;} } s1 = new Stock("2330", 100, 1000); //建構子Stock建構s1 s2 = new Stock("2880", 1000, 30); //建構子Stock建構s2 st = s1.code+' 股數 '+s1.shares.toString()+'<BR>'+s2.code.toString()+' 股數 '+s2.shares; document.getElementById('cat').innerHTML = st;</SCRIPT> Javascript程式碼加入配對(字典)指令 dict =new Map([["2303","聯電"],["2330","台積電"],["2880","華南金"]]);//宣告配對(字典) w3schools練習

黃俊珵HTML按鈕BUTTON事件ONCLICK

物件導向設計OOP=Object-Oriented Programming 主詞subject受詞object東方的oriental id=identity,身分證id card, division區塊,段落 .方法get()是取得對應的值,功能同字典 dict.get(s1.code)從dict字典取得索引為s1.code的值 黃俊珵執行 不編排PYTHON程式碼,期中考後再練習。 JAVASCRIPT的字典 dict =new Map([["2303","聯電"],["2330","台積電"],["2880","華南金"],['AAPL','蘋果公司'],['C','花旗銀行'],['T','美國電話電報']]);//宣告配對(字典) PYTHON的字典 dict ={"2303":"聯電","2330":"台積電","2880":"華南金",'AAPL':'蘋果公司','C':'花旗銀行','T','美國電話電報'} 期中考心得將以前的重點貼上 Javascript物件導向Python物件導向 Javascript與Python比較 python串列List(陣列Array),元組Tuple,集合Set,字典Dict Python 陣列array串列的函數(方法) eval函數將字串運算 整合開發環境IDE的Jupyter編輯Python程式碼

黃俊珵Javascript與Python比較

圖片
全球市場價值最大的銀行 按鈕PUSH增加 按鈕POP執行自訂函數kill 按鈕POP執行kill呼叫其他函數 CSS也可以in-line 以上javascript與html與css程式碼 <STYLE>BUTTON{COLOR:WHITE;BORDER-RADIUS:20PX;}H1{COLOR:WHITE;BACKGROUND-COLOR:BLACK;TEXT-ALIGN:CENTER;PADDING:5PX;}</STYLE> <button onclick="ABC()">全球市場價值最大的銀行</button> <button onclick="XYZ()">按鈕PUSH增加</button> <button onclick="kill()">按鈕POP執行自訂函數kill</button> <button onclick="kill_SHOW()">按鈕POP執行kill呼叫其他函數</button> <P id="SHOW" style="BACKGROUND-COLOR:PINK; FONT-SIZE:24PX;"></P> CSS也可以in-line <script> banks=['摩根大通','美國銀行','中國工商銀行','富國銀行','匯豐銀行','巴黎銀行']; function ABC()  { let x = '';//定義字串x內容空白 for (let i in banks)//javascript for loop () python不需要     { x += banks[i] + '<BR>';} //x後面加上banks[0]....<> document.getElementById('SHOW').innerHTML = x;} function XYZ(...

黃俊珵python串列List(陣列Array),元組Tuple,集合Set,字典Dict

圖片
EMBED嵌入影片522 EMBED DIAMOND手環嵌入鑽石 期中考筆試重點 .SELECTOR{用在多個元素},SPAN拇指與小指的距離,一小段,一小段的文字 UL=UNDERER LIST, OL=ORDERED LIST, LI=LIST push推,美國餐廳放置餐盤的架子下面是彈簧,取盤子pop,放入盤子push append附加在後面, appendix書本的附錄 大括號{ } CURLY BRACKET, CURLY捲,用於 PYTHON集合 中括號[ ] SQUARE BRACKET, SQUARE方形,用於 PYTHON串列 小括號( ) CIRCLE BRACKET, CIRCLE圓,用於 PYTHON元組 角括號<>CORNER BRACKET,不能直接打角括號,因為它們是HTML命令,需用&符號接LT(小於Less Then)再分號; 圓周CIRCUMFERENCE, 直徑DIAMETER, 半徑RADIUS BORDER邊界, SOLID實心, PX=PIXEL點 PYTHON與JAVASCRIPT命令的對照 ,PYTHON必須透過編輯器或雲端伺服器(例如GOOGLE COLAB)執行, JAVASCRIPT可以直接在瀏覽器CHROME或EDGE執行 PYTHON指令len(串列)對比JAVASCRIPT串列.length; PYTHON指令串列.append(新增)對比JAVASCRIPT串列.push(新增); 按鈕BUTTON按下去的事件ONCLICK 按鈕BUTTON push 以上程式碼在html模式貼在最下面 <BUTTON ONCLICK='ABC()'>按鈕BUTTON按下去的事件ONCLICK</BUTTON> <BUTTON ONCLICK='XYZ()'>按鈕BUTTON push</BUTTON> <P ID='SHOW'></P> <SCRIPT> banks=['摩根大通','美國銀行','中國工商','富國銀行']; function AB...

2025年3月4日上課Python 陣列array串列的函數(方法)

圖片
利用w3schools練習的python指令 animal = ["豬", "牛", "羊", '貓'] #python語言的註解comments x = animal.copy() print(animal) x.reverse() #將x反轉reverse print(x) animal.append('狗') print(animal) y = animal.copy() y.reverse() #將x反轉reverse print(y) Python 說明或範例JavaScript len() len(list) # 串列 list 長度 list.length; append() list.append(’ 加元素’) list.push(’ 加元素’) clear() list.clear() # 移除所有元素 copy() a = list.copy() # 拷貝至新串列 a count() list.clear() # 移除所有元素 list.count(’ 豬頭’) #list=[’ 豬頭’,...]? extend() list.extend([’ 豬頭’,’ 狗屎’])# 合併 (延伸) 串列 a=list.concat([’ 豬頭’,’ 狗屎’]) index() insert() list.index(’ 豬頭’) # 元素第一次出現的位置 0, 1, 2... list.indexOf(’ 豬頭’) list.insert(k,’ 豬頭’)# 位置 k 前插入元素’ 豬頭’ pop() list.pop(k) # 移除位置 k 元素 remove() list.remove(’ 豬頭’) # 移除第一次出現的’ 豬頭’ reverse() list.reverse()# 將元素次序反轉 list.slice(k,k + 1) list.reverse() sor...

黃俊珵eval函數將字串運算

黃俊珵學習Bro code製作計算機 display.value = eval(display.value) disply的vlue用eval(display.value)取代,算是「字串」運算結果 eval()內建函數(方法) in-line線內設定樣式。readonly唯讀read only。電腦的.的接續術性或函數disply.value面板顯示的內容value值。px=pixel點 + 7 8 9 - 4 5 6 * 1 2 3 / 0 . = 刪 1 2 3 https://www.youtube.com/watch?v=I5kj-YsmWjM Build this JS calculator in 15 minutes!

黃俊珵整合開發環境IDE的Jupyter編輯Python程式碼

圖片
SPYDER程式碼 程式碼 from tkinter import * #從函式庫 tkinter 輸入所有 * 方法 banks=['摩根大通','美國銀行','中國工商','富國銀行','匯豐銀行','巴黎銀行'] def ABC(): #畫圖 define自訂函數 global b1 #宣告b1是廣域GLOBAL變數,其他函數也可使用 txt = '' for i in range(len(banks)): txt += banks[i] + ' ' b1=Label(canvas,text=txt,font='Arial 20 bold') b1.pack(side=TOP) def XYZ(): #清除視窗的all所有canvas圖 banks.append('三菱銀行') banks.append('台灣銀行') ABC()#結束XYZ之前給它顯示 def kill(): b1.pack_forget() tk = Tk() tk.title("賴青德python建立tkinter視窗使用者介面") #也可以定義視窗名為 window, root課本都如此習慣 canvas = Canvas(tk, width=400, height=400) canvas.pack() btn1 = Button(tk, text="賴青德銀行", command = ABC, bg='black',fg='white').pack(side=LEFT) btn2 = Button(tk, text="賴青德增加", command = XYZ).pack(side=LEFT) btn3 = Button(tk, text="賴青德刪除", command = kill).pack(side=LEFT) tk.mainloop()