發表文章

楊雅竹python執行IRR

圖片
維基百科數值分析二分法 pmt = [0,0,0,0] #劉任昌程式設計586設定串列list pmt[0]=float(input('躉繳金額: ')) 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 < 100): loopNumber+=1 c = (a+b)/2; f = npv(c); if ( abs(f) > maxerror and gap > maxerror): if ( f>0 ): a = c else: b = c gap = b-a; print('報酬率: ', c) print('淨現值: ', f) print('迴圈次數: ', loopNumber)

楊雅竹期末考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").innerHTML = "內部報酬率小於0."; ...

楊雅竹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()

楊雅竹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也會使用下面的JAVASCRIPT1 利率y(rate) 期數n(nper) 金流m(pmt) 終值f(fv) 參考楊雅竹金融市場講義https://drive.google.com/file/d/17z6UZgN5fC2XCO1L8_BQs57dgQXzbwou/view?usp=sharing 楊雅竹學習HTML+CSS+JavaScript程式碼 <style> h1{border: 30px outset red;     background-color: green;     color: white;   text-align: center;} </style> <script> function computePV(){   var r = document.getElementById("rate").value;   var n = document.getElementById("nper").value;   var m = document.getElementById("pmt").value;   var f = document.getElementById("fv").value;   pvif...

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...

楊雅竹javascript執行三角函數繪圖

執行

PYTHON三角函數YOUTUBE影片

圖片
程式碼 from tkinter import * #或者import tkinter as tk import math tk = Tk() #建構視窗名為tk tk.geometry('1200x400') tk.title("楊雅竹python tkinter三角函數") canvas = Canvas(tk, width=1200, height=400, bg='gray') canvas.grid(row=0,column=0,padx=5,pady=5,columnspan=3) delay=2 # milliseconds, 1/1000秒 x1,y1,z1=0,200,10 h=190 #上下範圍 degree=0 #角度degree def LauHou(): global x1, y1,z1 x2 = x1 + 1 y2=200 - h*math.sin(0.02*x2) #座標從左上角0 z2=200 - h*math.cos(0.02*x2) l1=canvas.create_line(x1,y1,x2,y2,fill='red',width=5) l2=canvas.create_line(x1,z1,x2,z2,fill='yellow',width=5) if (x2
現在 瀏覽器 建構網頁,然後在Spyder輸入docx函式庫,建構WORD文件。拷貝以下紅色框內的程式碼到記事本,另存檔名「自己名字.HTML」, 存檔類型必須「*.*」 。 <body> <P id='shit'>網頁和微軟WORD相同的命令document.paragraph</P> </body> <script> let t = document.createElement("H1"); t.innerText = "標題一"; t.style.background ='yellow'; document.body.appendChild(t); let u = document.createElement("P"); u.innerText = "創立create元素Element。"; u.style.background ='green'; document.body.appendChild(u); let v = document.createElement("SPAN"); v.innerText = "小段SPAN相當於WORD的run。"; v.style.background ='blue'; document.getElementById('shit').appendChild(v); </script> Spyder執行Python程式建構WORD from docx import Document document = Document() document.add_heading('楊雅竹python套件docs', 0) p = document.add_paragraph('文件document是網頁HTML根物件,也是') p.add_run('微軟WORD').bold = True p.add_run('文書軟體的根物件,HTML和WORD的結構') p.add_run(...

JAVASCRIPT建構網頁

楊雅竹按鈕 網頁和微軟WORD相同的命令document.paragraph

JAVASCRIPT建構網頁文件vs.PYTHON建構WORD文件

現在 瀏覽器 建構網頁,然後在Spyder輸入docx函式庫,建構WORD文件。拷貝以下紅色框內的程式碼到記事本,另存檔名「自己名字.HTML」, 存檔類型必須「*.*」 。 <body> <P id='shit'>網頁和微軟WORD相同的命令document.paragraph</P> </body> <script> let t = document.createElement("H1"); t.innerText = "標題一"; t.style.background ='yellow'; document.body.appendChild(t); let u = document.createElement("P"); u.innerText = "創立create元素Element。"; u.style.background ='green'; document.body.appendChild(u); let v = document.createElement("SPAN"); v.innerText = "小段SPAN相當於WORD的run。"; v.style.background ='blue'; document.getElementById('shit').appendChild(v); </script> Spyder執行Python程式建構WORD from docx import Document document = Document() document.add_heading('楊雅竹python套件docs', 0) p = document.add_paragraph('文件document是網頁HTML根物件,也是') p.add_run('微軟WORD').bold = True p.add_run('文書軟體的根物件,HTML和WORD的結構') p.add_run(...

楊雅竹HTML按鈕BUTTON事件ONCLICK

物件導向設計OOP=Object-Oriented Programming 主詞subject受詞object東方的oriental id=identity,身分證id card, division區塊,段落 楊雅竹執行 期中考心得將以前的重點貼上 不編排PYTHON程式碼,期中考後再練習。 JAVASCRIPT的字典 dict =new Map([["2303","聯電"],["2330","台積電"],["2880","華南金"],['AAPL','蘋果公司'],['C','花旗銀行'],['T','美國電話電報']]);//宣告配對(字典) PYTHON的字典 dict ={"2303":"聯電","2330":"台積電","2880":"華南金",'AAPL':'蘋果公司','C':'花旗銀行','T','美國電話電報'}

楊雅竹javascript物件導向python物件導向

圖片
物件導向程式設計 Javascript指令new Constructor產生新的instance案例 s1.shares.toString()=案例sa的屬性shares內建方法toString()轉成字串,原來的數字被轉成字串string才可以和其他字串相加 在原來的輸出指令插入+dict.get(s1.code)+ 從字典dict查詢s1.code的結果 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; JAVASCRIPT程式碼加入配對(字典)指令 dict =new Map([["2303","聯電"],["2330","台積電"],["2880","華南金"]]);//宣告配對(字典)

楊雅竹Javascript與Python比較

楊雅竹增加 楊雅竹銀行 刪除串列的最後一個元素

楊雅竹python,tkinter,Entry建構輸入工具,pop移除串列元素

圖片
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(bank.get())#得到bank變數 ABC()#結束XYZ之前給它顯示 def kill(): banks.pop()#pop()移除banks串列的最後一個元素 ABC() tk = Tk()#建構視窗名為tk global bank#宣告廣域變數bank,local是global相反 bank = StringVar(tk)#bank視窗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, fg='blue').pack(side=LEFT) btn3 = Button(tk, text...

楊雅竹合開發環境IDE的Jupyter編輯Python程式碼

圖片
SPYDER程式碼 程式碼 from tkinter import * #從函式庫 tkinter 輸入所有 * 方法 banks=['摩根大通','美國銀行','中國工商','富國銀行','匯豐銀行','巴黎銀行'] def ABC(): #畫圖 define自訂函數 global b1 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('三菱銀行') 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()

楊雅竹Javascript與Python比較

全球市場價值最大的銀行 按鈕BUTTON push增加 pop刪除最後一項 按鈕POP執行Kill呼叫其他函數 CSS也可以in-line 以上javascript與html與css程式碼 <STYLE>BUTTON{GREEN:PINK;BORDER-RADIUS:20PX;}H1{COLOR:WHITE;BACKGROUND-COLOR:PURPLE;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 拷貝521連結的期中考重點 .SELECTOR{用在多個元素},SPAN拇指與小指的距離,一小段,一小段的文字 UL=UNDERER LIST, OL=ORDERED LIST, LI=LIST 大括號{ }CURLY BRACKET, CURLY捲,用於PYTHON的集合 中括號[ ] SQUARE BRACKET, SQUARE方形,用PYTHON串列 小括號( ) CIRCLE BRACKER, CIRCLE圓,用於 PYTHON元組 角括號<>CORNER BRACKET,不能直接打角括號因為他們是HTML命令需用&符號接LT(小於Less Then)在分號; 圓周CIRCUMFERENCE 直徑DIAMETER 半徑RADIUS BORDER邊界, SOLID實心, PX=PIXEL點

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)

楊雅竹利用CHATGPT大語言模型產出程式碼

圖片
楊雅竹Canvas 計算機 楊雅竹Canvas 計算機 PYTHON陣列方法 Method Description append() Adds an element at the end of the list clear() Removes all the elements from the list copy() Returns a copy of the list count() Returns the number of elements with the specified value extend() Add the elements of a list (or any iterable), to the end of the current list index() Returns the index of the first element with the specified value insert() Adds an element at the specified position pop() Removes the element at the specified position remove() Removes the first item with the specified value reverse() Reverses the order of the list PYTHON陣列方法在撰寫模式貼上 a Method Description append() Adds an element at the end of the list clear() Removes all the elements from the list copy() Returns a copy of the list count() Returns the number of elements with the specified value extend() Add the elements of a list (or any iterable), to the end of the current list index() Returns the index of the first eleme...