2020年9月11日 星期五

sympy solve 解一元一次及二次方程式 未知數方程式 聯立方程式

一.解一元一次方程式 
from sympy import *
from sympy import *
x=Symbol("x")
formula=8*x-24
result=solve(formula)
print(result)

結果是 [3]


一元二次方程式



二.解未知數的方程式



三.解聯立方程式



2020年9月9日 星期三

tkinter 視窗


基本架構
import tkinter
win=tkinter.Tk()
win.title("this is a test")
win.geometry("200x400")
win.mainloop()

tkinter.Label
import tkinter
win1=tkinter.Tk()
win1.title("ddd")
win1.geometry("200x400")
lbe=tkinter.Label(win1,text="hello word",bg="red")
lbe.grid(row=70,column=20)
lbe.pack()
win1.mainloop()

2020年9月8日 星期二

sympy sub( )

adaped from  https://vimsky.com/zh-tw/examples/usage/python-sympy-subs-method.html

method  ==> sympy.subs(source, destination)

返回:Return the same expression by changing the variable.



 
from sympy import *
x,y=symbols("x,y")
formu=2*x+3*y
print(formu)
reformu=formu.subs({x:2,y:3})
print(reformu)

結果
2*x + 3*y 
13 
==================================

 
from sympy import *
x,y,z=symbols("a,b,c")
print(z.name)
formu=3*x+2*y+z
print(formu)
result=formu.subs({x:3,y:2,z:1})
result2=formu.subs({a:3,b:2,c:1})
print(result)
print(result2)

結果是
c
3*a + 2*b + c
14
14

=====將字串轉為數學表達式


from sympy import *
x=Symbol("x")
formula=input("請輸入公式\n")
eq=sympify(formula)          #將字串轉為數學表達式
value=int(input("請輸入值"))
print(eq)
result=eq.subs({x:value})   #將數值代入公式
print(result)

about sympy


sympy 用於線性代數
from sympy import *
a,b,c=symbols("x,y,z")
print(a.name)
formu=a+a+b+c
print(type(a.name))
print(formu)

結果是
x
<class 'str'>
2*x + y + z

主程式的函數

def fnSearch(pid):
    sqlstr = "SELECT * FROM 產品 WHERE 編號='{}'".format(pid)   #建table時 設編號的格式是text
    cursor = cn.execute(sqlstr)
    #連接物件執行execute()方法 執行SELECT 查詢的SQL的語法,會傳回cursor的物件
    return cursor.fetchone()    #查詢的第一筆資料 以一維list傳回


fnCreate()
def fnCreate():
    pid = input("編號:")   #預設是str
    if fnSearch(pid)!=None:
        print("編號:{} 重複".format(pid))  
        return 
    name = input("品名:")
    price = int(input("單價:")) 
    sqlstr = "INSERT INTO 產品(編號,品名,單價)VALUES('{}','{}',{})".format(pid, 
              name, price)  #建立TABLE時 只有 價錢是INT
    cn.execute(sqlstr)
    cn.commit()  
    print("產品記錄新增成功")


def fnUpdate():
def fnUpdate():
    pid = input("編號:")
    if fnSearch(pid)==None:
        print("無編號:{} 的產品記錄".format(pid))
        return 
    name = input("品名:")
    price = int(input("單價:")) 
    sqlstr = "UPDATE 產品 SET 品名='{}', 單價={} WHERE 編號='{}'".format(name, 
              price, pid)
    cn.execute(sqlstr)
    cn.commit() 
    print("產品記錄修改成功")


def fnDelete()
def fnDelete():
    pid = input("編號:")
    if fnSearch(pid)==None:
        print("無編號:{} 的產品記錄".format(pid))
        return 
    sqlstr = "DELETE FROM 產品 WHERE 編號='{}'".format(pid)
    cn.execute(sqlstr)
    cn.commit() 
    print("產品記錄刪除成功")


def fnRead()
def fnRead():
    sqlstr = "SELECT * FROM 產品"
    cursor = cn.execute(sqlstr)
    listProduct = list(cursor.fetchall())
    print("編號\t品名\t單價")
    print("=========================")
    for row in listProduct:
        for col in row:
            print(col, end="\t")
        print()
    cursor.close()

主程式



while True:
    print("==碁峰產品管理系統==")
    print("   1. 新增產品")
    print("   2. 修改產品")
    print("   3. 刪除產品")
    print("   4. 顯示產品")
    print("   5. 離開系統")
    print("===================")
    n = int(input("請撰擇功能:"))
    if n==1:
        fnCreate()
    elif n==2:
        fnUpdate()
    elif n==3:
        fnDelete()
    elif n==4:
        fnRead()
    elif n==5:
        print("離開系統")
        break
    else:
        print("無此功能")
    print()
cn.close()

2020年9月6日 星期日

資料表查詢


import sqlite3
cn = sqlite3.connect("myDb.db")   #建立或聯結 "myDb.db" 
sqlstr="CREATE TABLE 產品(編號 text,品名 text,單價 int)" #建立資料表 產品
#cn.execute(sqlstr)                #執竹行sql語法 若是第一次執行則將此行 # 拿掉
cn.commit()                       #更新資料庫
cn.execute("INSERT INTO 產品(編號,品名,單價)VALUES('P01','碁峰豆干',90)")
cn.execute("INSERT INTO 產品(編號,品名,單價)VALUES('P02','碁峰可樂',190)")
cn.execute("INSERT INTO 產品(編號,品名,單價)VALUES('P03','碁峰紅茶',30)")
cn.commit()

sqlstr = "SELECT * FROM 產品"
cursor = cn.execute(sqlstr)   #指標物件
listProduct = list(cursor.fetchall()) #fetchall() 二維串列
print("編號\t品名\t單價")
print("=========================")
for row in listProduct:        #row 橫
    for col in row:            #col 直
        print(col, end="\t")
    print()
cursor.close()
cn.close()

2020年9月5日 星期六

1-1 繪製x y 圖

import matplotlib.pyplot as plt
squ=[]
x=[x for x in range(9)]

for y in range(9):
    y2=y*y
    squ.append(y2)
    
plt.plot(x,squ)
plt.show()

import matplotlib.pyplot as plt
squ=[]
x=[x for x in range(9)]

for y in range(9):
    y2=y*y
    squ.append(y2)
    
plt.plot(x,squ)
plt.axis([0,8,0,70])   #設定x y 軸的最小及最大的刻度 以list表示
plt.grid()             #設定 格線
plt.show()

import matplotlib.pyplot as plt
squ=[]
x=[x for x in range(9)]

for y in range(9):
    y2=y*y
    squ.append(y2)
    
plt.plot(x,squ,lw=10)  #lw=設定線條寬度
plt.axis([0,8,0,70])   #設定x y 軸的最小及最大的刻度 以list表示
plt.grid()             #設定 格線
plt.title("test")
plt.xlabel("values")
plt.ylabel("平方值")    #中文出不來
plt.show()

import matplotlib.pyplot as plt
squ=[]
x=[x for x in range(9)]

for y in range(9):
    y2=y*y
    squ.append(y2)
    
#把第二數據的y值 設定為費式數列
def fibo(n):
    if n == 0:
        return 0;
    elif n == 1:
        return 1;
    return fibo(n-1) + fibo(n-2)

fibo1=[]
for i in range(9):
    fibosi=fibo(i)
    fibo1.append(fibosi)
    
    
#plt.plot(x,squ,lw=10)  #lw=設定線條寬度
plt.plot(x,squ,x,fibo1) #兩組數據
plt.axis([0,8,0,70])   #設定x y 軸的最小及最大的刻度 以list表示
plt.grid()             #設定 格線
plt.title("test")
plt.xlabel("values")
plt.ylabel("平方值")    #中文出不來
plt.show()

=========將繪製的圖存成 test.jpg
import matplotlib.pyplot as plt
squ=[]
x=[x for x in range(9)]

for y in range(9):
    y2=y*y
    squ.append(y2)
    
#把第二數據的y值 設定為費式數列
def fibo(n):
    if n == 0:
        return 0;
    elif n == 1:
        return 1;
    return fibo(n-1) + fibo(n-2)

fibo1=[]
for i in range(9):
    fibosi=fibo(i)
    fibo1.append(fibosi)
    
    
#plt.plot(x,squ,lw=10)  #lw=設定線條寬度
plt.plot(x,squ,x,fibo1) #兩組數據
plt.axis([0,8,0,70])   #設定x y 軸的最小及最大的刻度 以list表示
plt.grid()             #設定 格線
plt.title("test")
plt.xlabel("values")
plt.ylabel("平方值")    #中文出不來
plt.savefig("test.jpg") #將繪製的圖存成 test.jpg
plt.show()

======== 使用 matplotlib 內的image 函數 把圖讀出來
import matplotlib.pyplot as plt
import matplotlib.image as img
pic=img.imread("test.jpg")   #使用 img.imread()把圖讀出來 叫做pic
plt.imshow(pic)              #使用 plot.imshow() 把叫做 pic show出來
plt.show()

====使用 matplotlib 的scatter 畫 圖
import matplotlib.pyplot as plt

x=[x for x in range(9)]

square=[]
for y in range(9):
    y2=x[y]*x[y]
    square.append(y2)
plt.scatter(x,square)

plt.show()

===========繪制三角函數圖
import matplotlib.pyplot as plt
import numpy as np
xpt=np.linspace(0,10,500)
ypts=np.sin(xpt)
yptc=np.cos(xpt)
plt.plot(xpt,ypts,color="y",label="sin")
plt.plot(xpt,yptc,color="r",label="cos")
plt.legend()
plt.show()

二維陣列(2d array) matrix

import numpy as np fru_items=[["apple","banana","cherry","durian","eggplant","fig...