2019年12月23日 星期一

循環結構

while



==============
for


for i in range(1,6):
    print (i)

選擇結構

score=int(input("請輸入的分數"))
if (score>90):
    print("good")
elif score>70:
    print("pretty good")
else:
    print("work hard")




===========加入 判斷 100以上 ,是否在重新執行

yon=True
while yon:
    score=int(input("請輸入的分數"))
    if (score>100):
        print("你要吃藥了")
    elif (score>90 ):
        print("good")
    elif (score>70 ):
        print("pretty good")
    else:
        print("work hard")
    yon=input("按y是繼續 or 按n是停止   ")
    if yon=="y":
        yon=True
    if yon=="n":
        yon=False
    
    

2019年12月4日 星期三

python about 目錄 檔案

import os
os.environ.get('PATH')

===========

import os
os.path.expanduser("~") #取得使用者 家目錄路徑

==========
import os
home=os.path.expanduser("~") #取得使用者 家目錄路徑
picpath=os.path.join(home,"picture","test","test.jpg")
print(picpath)

2019年11月14日 星期四

連續字輸出在pdf

# 匯入模組
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import reportlab.lib.units as unit
import reportlab.lib.pagesizes as pagesizes

# register font
pdfmetrics.registerFont(UnicodeCIDFont("HeiseiKakuGo-W5"))

# create save pdf
pdf = canvas.Canvas("myfirst.pdf", pagesize=pagesizes.A4) #指定名稱和大小
title="運動大雜燴"
for word in title:
    pdf.setFont("HeiseiKakuGo-W5", 210*unit.mm)
    h=(297-210)/2 * unit.mm
    pdf.drawString(0 * unit.mm, h, word) #pdf 內容及大小
    pdf.showPage()   #換頁
pdf.save()

2019年11月10日 星期日

製作pdf

# 匯入模組
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import reportlab.lib.units as unit
import reportlab.lib.pagesizes as pagesizes

# register font
pdfmetrics.registerFont(UnicodeCIDFont("HeiseiKakuGo-W5"))

# create save pdf
pdf = canvas.Canvas("myfirst.pdf", pagesize=pagesizes.A4) #指定名稱和大小
pdf.setFont("HeiseiKakuGo-W5", 14)
pdf.drawString(100 * unit.mm, 2 * unit.mm, "第一個PDF") #pdf 內容及大小
pdf.save()

============
匯入pdf模組(reportlab) 五類
1.canvas   ==>pdf 的頁面名稱
2.regiterfont   ==>UnitcodeCIDFont
3.setfont      ==>
4.unit          ==>
5.pagesize   ===>紙張大小

2019年11月5日 星期二

繪圖(一)

import tkinter as tk
root=tk.Tk()
root.geometry("600x400")

canvas=tk.Canvas(root,width=600,height=400,bg="white")
canvas.place(x=0,y=0)

canvas.create_oval(300-60,200-20,300+20,200+20)
root.mainloop()

視窗形式 驗證是否輸入為四位數(二)

輸入數字加右框
加入
rirekibox.insert(tk.END,b+"\n")

rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=400,y=0,width=200,height=400)



import tkinter as tk
import tkinter.messagebox as tmsg
import random

def ButtonClick():
    #a=[random.randint(1,9),random.randint(1,9),random.randint(1,9),random.randint(1,9),]
    b=editbox_1.get()
    
    if (len(b)!=4):
        tmsg.showerror("錯誤","請重新輸入")
    else:
        kazuok=True
        for i in range(4):
            if (b[i]>"9" or b[i]<"0"):
                tmsg.showerror("錯誤","請重新輸入")
                kazuok=False
                break
        if kazuok:
            #tmsg.showinfo("你輸入的文字",b)
            rirekibox.insert(tk.END,b+"\n")
root=tk.Tk()
root.title("猜數字遊戲")
root.geometry("600x400")
label_1=tk.Label(root,text="請輸入數字",font=("Helvetica",14))
label_1.place(x=20,y=20)

editbox_1=tk.Entry(width=4,font=("Helvetica",14))
editbox_1.place(x=150,y=20)

button_1=tk.Button(root,text="確認",font=("Helvetica",14),command=ButtonClick)
button_1.place(x=150,y=60)

rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=400,y=0,width=200,height=400)
root.mainloop()

視窗形式 驗證是否輸入為四位數

import tkinter as tk
import tkinter.messagebox as tmsg
import random

def ButtonClick():
    #a=[random.randint(1,9),random.randint(1,9),random.randint(1,9),random.randint(1,9),]
    b=editbox_1.get()
   
    if (len(b)!=4):
        tmsg.showerror("錯誤","請重新輸入")
    else:
        kazuok=True
        for i in range(4):
            if (b[i]>"9" or b[i]<"0"):
                tmsg.showerror("錯誤","請重新輸入")
                kazuok=False
                break
        if kazuok:
            tmsg.showinfo("你輸入的文字",b)
root=tk.Tk()
root.title("猜數字遊戲")
root.geometry("400x200")
label_1=tk.Label(root,text="請輸入數字",font=("Helvetica",14))
label_1.place(x=20,y=20)

editbox_1=tk.Entry(width=4,font=("Helvetica",14))
editbox_1.place(x=150,y=20)

button_1=tk.Button(root,text="確認",font=("Helvetica",14),command=ButtonClick)
button_1.place(x=150,y=60)

root.mainloop()

2019年11月4日 星期一

guess number

# coding:utf-8
import random
import tkinter as tk
import tkinter.messagebox as tmsg


def ButtonClick():
   
    b = editbox1.get()

   
    #判斷是否為4位數
    isok = False
    if len(b) != 4:
        tmsg.showerror("錯誤", "請填4個數字")
    else:
        kazuok = True
        for i in range(4):
            if (b[i] <"0") or (b[i] > "9") :
                tmsg.showerror("錯誤", "不是數字")
                kazuok = False
                break
        if kazuok :
            isok = True

    if isok :
        # 當輸入為4位數
        # hit 判定
        hit = 0
        for i in range(4):
          if a[i] == int(b[i]):
            hit = hit + 1

        # blow 判定
        blow = 0
        for j in range(4):
          for i in range(4):
            if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):
              blow = blow + 1
              break
           
        #當 hit==4
        if hit == 4:
            tmsg.showinfo("猜中了", "恭喜。猜中了")
            # 終了
            root.destroy()
        else:
            # hit and blow 的題示
            tmsg.showinfo("提示", "Hit " + str(hit) + "/" + "Blow " + str(blow))

adpated from python 入門教室

# 取亂數
a = [random.randint(0, 9),
     random.randint(0, 9),
     random.randint(0, 9),
     random.randint(0, 9)]



root = tk.Tk()
root.geometry("400x150")
root.title("猜數字遊字")


label1 = tk.Label(root, text="輸入數字", font=("Helvetica", 14))
label1.place(x = 20, y = 20)

label2=tk.Label(root,text=a,font=("Helvetica",14))
label2.place(x=20,y=120)


editbox1 = tk.Entry(width = 4, font=("Helvetica", 28))
editbox1.place(x = 120, y = 60)


button1 = tk.Button(root, text = "確定", font=("Helvetica", 14), command=ButtonClick)
button1.place(x = 220, y = 60)


root.mainloop()

2019年11月3日 星期日

輸入五次成績

輸入五次成績 且大於100, 小於0 則重新輸入
score_list=[0]*5
for i in range(0,5):
    score=int(input("請輸入你的成績"))
    check=True
    while check:
        if (score>100 or score<0):
            print("請重新輸入你的成績")
            score=int(input("請輸入你的成績"))
        else:
            check=False
    score_list[i]=score
print("你的五次成績分數是{}".format(score_list))

2019年10月27日 星期日

猜數字 以視窗表示

import tkinter as tk
import tkinter.messagebox as tmsg

def ButtonClick():
    b=editbox_1.get()
    tmsg.showinfo("你輸入的數字是",b)

root=tk.Tk()
root.geometry("400x500")
root.title("猜數字遊戲")
label_1=tk.Label(root,text="請輸入一個數字",font=("Helvetica",14))
label_1.place(x=20,y=20)
editbox_1=tk.Entry(width=4,font=("Helvertica",28))
editbox_1.place(x=200,y=20)
button_1=tk.Button(root,text="確定",font=("Helvetica",14),command=ButtonClick)
button_1.place(x=200,y=50)

root.mainloop()


原始檔

2019年10月23日 星期三

tkinter abc

# 1.主程式
"""
    import tkinter as tk
    root=tk.Tk()
    root.mainloop()
"""

# 2.改變視窗大小
"""
   root.geometry("400x150")   
"""

# 3.設立標題
"""
   root.title("數學遊戲")
"""

# 4.配置 lable及位置
"""
   label_1=tk.Label(root,text="請輸入數字")
   label_1.place(x=20,y=20)
"""
# 5.配置 輸入欄位及位置
"""
   editbox_1=tk.Entry(width=4)
   editbox_1.place(x=120,y=20)
""" 
# 6.配置欄位 大小
"""
    label_1=tk.Label(root,text="請輸入數字")
改成 label_1=tk.Label(root,text="請輸入數字",font=("Helvetica",14))

    editbox_1=tk.Entry(width=4)
改成 editbox_1=tk.Entry(width=4,font=("Helvetica",28))
"""
import tkinter as tk
root=tk.Tk()
root.geometry("400x150")
root.title("數字遊戲")
#label_1=tk.Label(root,text="輸入數字")
label_1=tk.Label(root,text="輸入數字",font=("Helvetica",14))

label_1.place(x=20,y=20)
#editbox_1=tk.Entry(width=4)
editbox_1=tk.Entry(width=4,font=("Helvetica",28))

#editbox_1.place(x=120,y=20)
editbox_1.place(x=120,y=60)
root.mainloop()

第六章

import tkinter as tk

root=tk.Tk()     #產生一個物件
root.geometry("400x150")   #是英文小寫 x
root.title("猜數字遊戲")

label1=tk.Label(root, text="輸入數字",font=("Helvetica",14))
label1.place(x=20,y=20)

editbox1=tk.Entry(width=4,font=("Helvetica",28))
editbox1.place(x=120,y=60)

root.mainloop()  #顯示物件

2019年10月12日 星期六

判斷是否 hit and blow

data from python 入門教室
#  判斷 hit    a是電腦取亂數 b是自己輸入
for i in range(4):
    if a[i]==int(b[i]):
        hit=hit+1


=======================
==========case 1
#判斷blow
#最初的式子 (判斷b[0]是否blow)
for i in range(4):
    if int(b[0])==a[i]:
        blow=blow+1
        break #避免重複計算

========改寫 1
#依上述的式子仍有重複判斷的結果
for i in range(4):
    if ((int(b[0])==a[i]) and (a[i] != int(b[i])) and (a[0] !=int(b[0]))):
        blow=blow+1
        break
    if ((int(b[1])==a[i]) and (a[i] != int(b[i])) and (a[1] !=int(b[1]))):
        blow=blow+1
        break
=========改寫2
#依上述的式子以迴圈表示
for j in range(4):
    for i in range(4):
        if ((int(b[j])==a[i]) and (a[i] != int(b[i])) and (a[j] !=int(b[j]))):
        blow=blow+1
        break

2019年10月4日 星期五

檢查是否為4位數

isok=False
while isok==False:
    d=input("請輸入四位數")
    if (len(d)!=4):
        print("請輸入4位數")
    else:
        isok=True
print(d[0])
print(d[1])
print(d[2])
print(d[3])


===========
isok=False
while isok==False:
    guess=input("輸入四位數")
    if (len(guess)!=4):
        print("重新輸入 要四位數")
    else:
        if (guess[0]>"9" or guess[0]<"0"):
            print("第一個數字填入不是數字")
        elif (guess[1]>"9" or guess[1]<"0"):
            print("第二個數字填入不是數字")
        elif (guess[2]>"9" or guess[2]<"0"):
            print("第三個數字填入不是數字")
        elif (guess[3]>"9" or guess[3]<"0"):
            print("第三個數字填入不是數字")
        else:
            isok=True
print(guess)

============
isok=False
while isok==False:
    guess=input("輸入四位數")
    if (len(guess)!=4):
        print("重新輸入 要四位數")
    else:
        sendjudge=True
        for i in range(4):
            if (guess[i]>"9" or guess[i]<"0"):
                 print("第{}個數字填入不是數字".format(i+1))
                 sendjudge=False
                 break
        if sendjudge:
            isok=True
print(guess)

2019年6月14日 星期五

檔案與資料夾

import os
os.chdir("d:\\up\python")     #切換至微軟作業系統 的d:\\up\python
print(os.getcwd())
os.mkdir("test")    #在d:\\up\python 建立test資料夾

===============
import os
fds=os.listdir("d:\\up")
for fd in fds:              #依次例出d槽up資料夾內的資料夾和檔案
  print(fd)

===========
======在ubuntu 下  =====================================
import os
os.chdir("/home/up")

print(os.getcwd())


=======
import os
os.chdir("/home/up")
fds=os.listdir("/home/up")
for fd in fds:

    print(fd)

==========================================
在ubuntu 系統
os.path.isfile(  )
os.path.isdir( )

import os
bool01=os.path.isfile("/home/up/test.txt")
bool02=os.path.isdir("/home/up/test")

=========印出資料夾下的檔案 in ubuntu
import os
files=os.listdir("/home/up")
for file in files:
    if (os.path.isfile(os.path.join("/home/up",file))):
        print(file)

========印出資料夾下的資料夾 in ubuntu

import os
files=os.listdir("/home/up")
for file in files:
    if (os.path.isdir(os.path.join("/home/up",file))):

        print(file)

==============以 glob 模組 印出 所要的檔案
import glob,os
path="/home/up/py"
os.chdir(path)
for file in glob.glob("*.py"):
    print (file)  


===========使用 迴圈 及自訂函數 來例出 檔案及資料夾 in ubuntu
dir="/home/up"
def cf_dir(dir):
    fds=os.listdir(dir)
    for fd in fds:
        full_path=os.path.join(dir,fd)
        if os.path.isdir(full_path):
            print("{}是資料夾".format (full_path))
        else:
            print("{}是檔案".format(full_path))
cf_dir(dir)










2019年5月10日 星期五

tkinter 用法

import tkinter as tk
root=tk.Tk()                                  #建立視窗畫面
root.geometry("400x100")           #決定視窗大小
lbl=tk.Label(text="LABLE")      #製作標籤
btn=tk.Button(text="按一下")    #製作按鈕

lbl.pack()
btn.pack()
tk.mainloop()


===========
import tkinter as tk
def showlabel():
    lbl.configure(text="不要亂按")    #標籤重置
root=tk.Tk()
root.geometry("400x100")
lbl=tk.Label(text="LABLE")
btn=tk.Button(text="按一下",command=showlabel)     #修改 按一下 執行的函數
lbl.pack()
btn.pack()
tk.mainloop()


============
import tkinter as tk
import random
def fate01():
    fates=["大吉","中吉","小吉"]
    fatesD=random.choice(fates)
    lbl.configure(text=fatesD)
root=tk.Tk()
root.geometry("400x100")
lbl=tk.Label(text="信則霊")
btn=tk.Button(text="按一下求籤",command=fate01)
lbl.pack()
btn.pack()


tk.mainloop()

2019年5月2日 星期四

print format 格式化輸出

====二進制

a=3
print("{:b}".format(a))

====8進制

a=13
print("{:o}".format(a))


====十六進制
a=133
print("{:x}".format(a))

from https://www.cnblogs.com/fat39/p/7159881.html
        http://www.runoob.com/python/att-string-format.html

2019年4月17日 星期三

取亂數

import random
print(random.random())

print(random.randint(1,6))    #取1 到6  的亂數

print(random.choice("good"))


fruits=["apple","banana","cherry"]
fruit=random.choice(fruits)
print(fruit)


========
num=0
for i in range(1,4):  #第一到第三次(有頭無尾)
    num01=(random.randint(1,6))  #取1到6
    print(num01)
    num=num+num01
print(num)



guess review

def check_guess(ans,guess):
    guessing=True
    temp=0
    while (guessing  and temp<3):
        if (ans==guess):
            print("you are right")
            guessing=False
        else:
            print("repeat again")
            guess=input("yonr answer is")
            temp=temp+1
    if (temp==3):
        print("the answer is %s" % (ans))

guess01=input("who is the most smart in the wrorld ? ")
check_guess("up",guess01)

2019年3月26日 星期二

wrong and check

score=0
def check_guess(guess,answer):
    global score
    temp=0 #新加的
    still_guessing=True   #新加的
    while still_guessing and temp<3:
        if guess==answer:
            print("you are right")
            score=score+1
            still_guessing=False
        else:
            if temp<2:
                print("wrong")
                temp=temp+1
    if temp==3:
        print("the correct answer is %s" % answer)
answer01=input("who is handson?")
check_guess("up",answer01)

================3/26 改
def check_gu(guess,answer):
    guessTime=True
    temp=0
    while (guessTime and temp<3):
        print("這是第%d次" % temp)
        guess=input("the most handsome is??")
        if (guess==answer):
            print("right")
            guessTime=False
        else:
            if (temp<2):
                print("try it again")
        temp=temp+1
    if (temp==3):
        print("the answer is %s" % answer)
guess01=input("the most handsome is??")
check_gu(guess01,"me")

======4/1 改
def guesswho(guess,answer):
    guessing=True
    temp=0
    while (guessing and temp<3):
        print("這是第%d次" % (temp+1))
        if (guess==answer):
            print("you are right")
            guessing=False
        else:
            if (temp<2):
                guess=input("repeat again")
               
            temp=temp+1
    if temp==3:
        print("the answer is %s" % answer)
       
guess01=input("who is most smart??")
guesswho(guess01,"up")