# PYTHON:raised_hands: ### :bulb:基本語法:bulb: |名稱|解釋|名稱|解釋| |-|-|-|-| |#|註解|print|在輸出畫面中顯示文字訊息| |input|輸入資料|eval|文字資料轉數字資料 |%d|字串|%3d|字串前預留3個位置| |{}|抓取後面資料|str|變成字串| |int|整數|float|小數or浮點數| |%|餘數|//|商| |**|平方|==|判斷兩個值是否相等| |IF|如果,A條件成立,執行A命令|elif|B條件成立,執行B指令| |else|否則,以上條件均不符合,執行最後一行語法|and|且| |or|或|/n|換行| |!=|不等於||| ||||| --- # --1215-- ### :bulb:輸入輸出:bulb: ```py= a=3 b=4 print(a+b) ``` * `Ctrl`+`F5`=執行 --- * input=輸入 * eval=文字轉數字 ```py= a=eval(input("a=")) b=eval(input("b=")) print(a+b) ``` --- * %d=字串 * %3d=預留3個位置 ```py= a=eval(input("a=")) b=eval(input("b=")) print("%d+%d=%d" % (a,b,a+b)) ``` --- * {}=抓取後面資料 ```py= a=eval(input("a=")) b=eval(input("b=")) print("{}+{}={}" .format(a,b,a+b)) ``` --- * str=變成字串 ```py= a="abc" b="123" print(a+str(b)) ``` --- #### ==計算溫度== * int=整數 * floot=浮點數 ```py= c=eval(input("請輸入攝氏溫度:")) f=9/5*c+32 print("轉換後的華氏溫度:%.2f"% f) ``` ```py= f=eval(input("請輸入華氏溫度:")) c=(f-32)*5/9 print("轉換後的攝氏溫度:%.2f"% c) ``` --- #### ==計算BMI== * %=餘數 * //=商 * **=根號 ```py= w=eval(input("請輸入體重(kg):")) h=eval(input("請輸入身高(cm):")) h=h/100 b=w/(h**2) print("轉換後的BMI:%.2f"% b) ``` --- ### :bulb:關係運算:bulb: #### ==絕對值== ```py= a=eval(input("請輸入數字:")) if a<0: b=-a else: b=a print("%.2f 的絕對值是%.2f" % (a, b)) ``` #### ==奇偶判斷== * == 判斷兩邊是否相等 * %d=顯示a,%s=顯示s ```python= a=eval(input("請輸入一個整數:")) if a%2 == 0: s="偶數" else: s="奇數" print("%d 是 %s" % (a,s)) ``` --- ### :bulb:多重判斷:bulb: #### ==成績判斷== ```py= score=eval(input("請輸入一個分數:")) if 100>=score and score>=88: s="甲等" elif 80>score>=60: s="乙等" elif 60>score>=0: s="丙等" else: s="輸入錯誤" print("%d 是 %s" % (score,s)) ``` #### ==二元一次方程式== ```py= a=eval(input("請輸入a係數:")) b=eval(input("請輸入b係數:")) c=eval(input("請輸入c常數項:")) d=b**2-4*a*c if d>0: print("無解") elif d==0: x=(-b)/(2*a) print("一組解:%.2f" % x) else: x1=(-b+d**0.5)/(2*a) x2=(-b-d**0.5)/(2*a) print("兩組解:%.2f,%.2f" % (x1,x2)) ``` --- #### ==商店1== ```py= a=eval(input("請輸入消費金額:")) b=eval(input("請輸入現金:")) if a>=5000: a*=0.7 b=b-a print("折扣後的金額:%.0f" % a) print("找零:%.0f" % b) elif a<5000 and a>=3000: a*=0.8 b=b-a print("折扣後的金額:%.0f" % a) print("找零:%.0f" % b) elif a<3000 and a>=1000: a*=0.9 print("折扣後的金額:%.0f" % a) print("找零:%.0f" % b) elif a<1000 and a>=0: a=a print("折扣後的金額:%.0f" % a) print("找零:%.0f" % b) else: print("金額輸入錯誤") ``` #### ==商店2== ```py= a=eval(input("請輸入消費金額:")) b=eval(input("請輸入現金:")) if a>=5000: a*=0.7 print("折扣後的金額:%.0f" % a) if b<a: s=a-b print("還須補:%.0f元" % s) else: b=b-a print("找零:%.0f" % b) elif a<5000 and a>=3000: a*=0.8 print("折扣後的金額:%.0f" % a) if b<a: s=a-b print("還須補:%.0f元" % s) else: b=b-a print("找零:%.0f" % b) elif a<3000 and a>=1000: a*=0.9 print("折扣後的金額:%.0f" % a) if b<a: s=a-b print("還須補:%.0f元" % s) else: b=b-a print("找零:%.0f" % b) elif a<1000 and a>=0: a=a print("折扣後的金額:%.0f" % a) if b<a: s=a-b print("還須補:%.0f元" % s) else: b=b-a print("找零:%.0f" % b) else : print("金額輸入錯誤") ``` --- # --1222-- ### :bulb:FOR迴圈:bulb: #### ==1+2+...+100== ```py= s=0 # 將數字從 1 加到 100 for i in range(1, 101, 1): # 將 i 加到 s 中 s += i print("1+2+...+100=%d" % s) ``` * s=0 宣告起始值 #### ==1+3+5+...+99== ```py= s=0 # 將奇數從 1 加到 99 for i in range(1,100,2): s+=i print("1+3+...+99=%d" % s) ``` #### ==顯示1~100每5個數字換行== ```py= for i in range(1,101): # %5d 表示輸出的數字佔 5 個位子 print("%5d" % i, end="") # 每 5 個數字就換行 if i % 5 == 0: print() ``` * /n=換行 --- #### ==判斷質數== ```py= n=eval(input("請輸入一個整數:")) # 預設flag=0是質數 flag=0 # 從 n-1 開始遞減到 2 for i in range(n-1, 1, -1): # 如果 n 能被 i 整除,不是質數 if n % i == 0: # 將flag設為 1 ,中斷迴圈 flag = 1 break # 檢查flag,0 是質數 if flag == 0: print("%d 是質數" % n) else: print("%d 不是質數" % n) ``` :::success ```py= n=eval(input("請輸入一個整數:")) # 從 n-1 開始遞減到 2 for i in range(n-1, 1, -1): # 如果 n 能被 i 整除,不是質數 if n % i == 0: print("%d 不是質數" % n) break else: # 如果在迴圈中沒有被中斷,是質數 print("%d 是質數" % n) ``` ::: #### ==1~100以內的質數== ```py= s=0 # 找出 2 到 100 之間的質數 for n in range(2, 101): # 從 n-1 開始遞減到 2 for i in range(n-1, 1, -1): # 如果 n 能被 i 整除,不是質數,中斷迴圈 if n % i == 0: break else: # 輸出質數,質數計數器+1 print("%5d" % n, end="") s += 1 # 一行 5 個質數,換行 if s % 5 == 0: print() print("共有 %d 個質數" % s) ``` --- #### ==最大公因數== ```py= a,b=eval(input("請輸入兩個整數:")) # 從較小的數字開始遞減到 1 for i in range(a, 0, -1): # 如果 a 與 b 能被 i 整除,找到最大公因數,中斷迴圈 if a % i == 0 and b % i == 0: gcd = i break print("最大公因數:%d" % gcd) # 如果最大公因數為 1,兩數互質 if gcd == 1: print("%d, %d 兩數互質" % (a, b)) ``` #### ==雞兔同籠== :::success ```py= t=eval(input("請輸入雞兔的總數:")) leg=eval(input("請輸入雞兔腳的總數:")) # 從 t 開始遞減到 0 for i in range(t, -1, -1): # 假設有 c 隻雞,r 隻兔 c = i r = t - c # 檢查腳的總數 if c * 2 + r * 4 == leg: print("雞有 %d 隻,兔有 %d 隻" % (c, r)) break else: # 迴圈沒有中斷表示無解 print("無解") ``` ::: --- # --1229-- ### :bulb:WHILE迴圈:bulb: #### ==1+2+...+100== ```py= i=1 sum=0 while i <100: sum+=i i+=1 print("1+2+3+...+100=%d" % sum) ``` #### ==存款利率== ```py= money=eval(input("存款金額:")) rate=eval(input("輸入銀行利率:")) target=eval(input("輸入目標金額:")) year=0 # 計算需要幾年才能達到目標金額 while money <= target: # 存款金額根據銀行利率增加 money = money + money * rate # 年份+1 year += 1 print("需存 %d 年" % year) print("存款金額:%.2f元" % money) ``` #### ==數字轉換== ```py= x=eval(input("請輸入數字:")) y=0 while x > 0: # 取 x 的最後一位數,加到 y 的十位上 y = x % 10 + y * 10 # 去掉 x 的最後一位數 x = x // 10 print("%d" % y) ``` --- ### **:bulb:函式:bulb:** #### ==執行函式== ```py= def printstar(n): # 輸出星號,執行 n 次 for i in range(0, n): # 輸出星號不換行 print("*", end="") # 傳遞參數 5,輸出 5 個星號 printstar(5) ``` #### ==階層== ```py= # 計算 n 的階乘 def fact(n): p=1 for i in range(1,n+1): p=p*i return p # 計算 5 的階乘除以 2 的階乘 print(fact(5)/fact(2)) # 計算 5 的階乘除以 3 的階乘再除以 2 的階乘 print(fact(5)/fact(3)/fact(2)) ``` #### ==1-100的總和與平均== ```py= def sumaverage(n1,n2=100): sum=0 average=0.0 # 計算總和 for i in range(n1,n2+1): sum+=i # 計算平均值 average=sum/(n2-n1+1) # 返回總和和平均值 return sum,average def main(): s,a=sumaverage(1,100) print("總和=%d,平均=%.2f" % (s,a)) ``` #### ==分數相加== :::success ```py= # 最大公因數函數 def gcd(a, b): for i in range(a, 0, -1): if (a % i == 0) and (b % i == 0): x = i break return x # 輸入兩個分數的分子分母 a1 = int(input("輸入第一個分數的分子:")) a2 = int(input("輸入第一個分數的分母:")) b1 = int(input("輸入第二個分數的分子:")) b2 = int(input("輸入第二個分數的分母:")) # 計算最大公因數 m = gcd(a2, b2) # 計算最小公倍數 lcm = a2 * b2 // m # 分子相加 x = a1 * (lcm // a2) + b1 * (lcm // b2) # 化簡 z = gcd(x, lcm) x = x / z lcm = lcm / z # 輸出 print("運算結果:%d / %d " % (x, lcm)) ``` ::: --- # --0105-- ### :bulb:上機考:bulb: #### ==01.計算總分及平均== ```py= # 輸入國英數成績 x=eval(input("請輸入國文成績:")) y=eval(input("請輸入英文成績:")) z=eval(input("請輸入數學成績:")) # 計算總分及平均 t= x + y + z a= t / 3 # 輸出 print("總分為:%d,平均為:%.2f" % (t,a)) ``` #### ==02.判斷三角形== * **=平方 ```py= x, y, z = eval(input("請輸入三邊長:")) if x + y < z or x + z < y or y + z < x: print("無法構成三角形") elif x**2 + y**2 == z**2 or x**2 + z**2 == y**2 or y**2 + z**2 == x**2: print("直角三角形") elif x**2 + y**2 < z**2 or x**2 + z**2 < y**2 or y**2 + z**2 < x**2: print("鈍角三角形") else: print("銳角三角形") ``` #### ==03.判斷質數== ```py= n=eval(input("請輸入一個整數:")) # 從 n-1 開始遞減到 2 for i in range(n-1, 1, -1): # 如果 n 能被 i 整除,不是質數 if n % i == 0: print("%d 不是質數" % n) break else: # 如果在迴圈中沒有被中斷,是質數 print("%d 是質數" % n) ``` #### ==04.雞兔同籠== ```py= t=eval(input("請輸入雞兔的總數:")) leg=eval(input("請輸入雞兔腳的總數:")) # 從 t 開始遞減到 0 for i in range(t, -1, -1): # 假設有 c 隻雞,r 隻兔 c = i r = t - c # 檢查腳的總數 if c * 2 + r * 4 == leg: print("雞有 %d 隻,兔有 %d 隻" % (c, r)) break else: # 迴圈沒有中斷表示無解 print("無解") ``` #### ==05.分數相加== ```py= # 最大公因數函數 def gcd(a, b): for i in range(a, 0, -1): if (a % i == 0) and (b % i == 0): x = i break return x # 輸入兩個分數的分子分母 a1 = int(input("輸入第一個分數的分子:")) a2 = int(input("輸入第一個分數的分母:")) b1 = int(input("輸入第二個分數的分子:")) b2 = int(input("輸入第二個分數的分母:")) # 計算最大公因數 m = gcd(a2, b2) # 計算最小公倍數 lcm = a2 * b2 // m # 分子相加 x = a1 * (lcm // a2) + b1 * (lcm // b2) # 化簡 z = gcd(x, lcm) x = x / z lcm = lcm / z # 輸出 print("運算結果:%d / %d " % (x, lcm)) ``` --- # --0301-- ### :bulb:LIST串列:bulb: #### ==抓出list資料== ```py= list1=[] list2=[1,2,3,4,5] print(list2) i=0 for i in range(0,len(list2)): print("%d : %d" % (i,list2[i])) ``` #### ==list資料相加== ```py= list1=[] list2=[1,2,3,4,5] print(list2) s=0 for a in list2: s+=a print("list2的總和:%d" % s) ``` #### ==移出list資料== * append=加入進去 * insert=插入 ```py= list1=[] list1.append(1) list1.append(2) list1.insert(1,4) print(list1) c=list1.pop(1) print(c) ``` #### ==list資料排序== * sort=遞增排序 * reverse=反轉 ```py= list1=[] list1.append(1) list1.append(2) list1.insert(1,4) print(list1) list1.sort() print(list1) list1.reverse() print(list1) ``` #### ==list資料大小== ```py= list1=[] list1.append(1) list1.append(2) list1.insert(1,4) print(list1) print(sum(list1)) print(max(list1)) print(min(list1)) ``` #### ==抽籤樂透== ```py= import random l=[] c=0 while c<5: a=random.randint(1,49) # 數字不重複 if a not in l: print(a,end=" ") l.append(a) c+=1 ``` --- ### **:bulb:二維串列:bulb:** #### ==資料相加== ```py= import random l=[] c=0 while c<5: a=random.randint(1,49) # 數字不重複 if a not in l: print(a,end=" ") l.append(a) c+=1 ``` #### ==新增二維串列== ```py= import random l=[] for i in range(4): # 加入空串列 l.append([]) for j in range(3): # 串列中加入3個隨機數字 l[i].append(random.randint(1,10)) for i in l: for j in i: # i是串列,j是整數 print("%5d" % j,end=" ") # 換行 print() ``` #### ==撲克牌加總== :::success ```py= c=[] for i in range(5): a=input() c.append(a) s=0 for x in c: if x=="A" or x=="a": s+=1 elif x=="J" or x=="j": s+=11 elif x=="Q" or x=="q": s+=12 elif x=="K" or x=="k": s+=13 else: s+=int(x) print("總和=%d" % s) ``` ::: #### ==亂數最大相加== :::success ```py= import random c=[] for i in range(10): c.append(random.randint(1,100)) # 小到大 c.sort() for x in c: print("%4d" % x,end=" ") print() # 大到小 c.reverse() for i in range(3): print("%4d" % c[i],end=" ") ``` ::: --- # --0308-- #### ==1-20的數字重複最多次== :::success ```py= import random l=[0]*20 for i in range(0,10): a=random.randint(1,20) l[a-1]+=1 print (l) max=0 index="" for i in range(0,20): if l[i]>max: max=l[i] index=str(i+1) elif l[i]==max: index=index + "," + str(i+1) print ("%s :%d" % (index, max)) ``` ::: --- ### **:bulb:DICTIONARY字典:bulb:** #### ==字典增加值== ```py= dic10={} dic10={'Taipei':"101",'Paris':"Tour Eiffel",'London':"Big Ben"} print (dic10['Taipei']) print (dic10['London']) # 增加值 dic10['Berlin']='wall' # del=刪除值 for i in dic10: print("%s: %s" % (i, dic10[i])) print(dic10.keys()) # keys=鍵值 for k in dic10.keys(): print(k) print(dic10.values()) ``` #### ==dic數字出現次數== :::success ```py= import random dic={} for i in range(5): a=random.randint(1,10) if a in dic: dic[a]+=1 else: dic[a]=1 print (dic) max_int=0 index="" for i in dic: if dic[i]>max_int: max_int=dic[i] index=str(i) elif dic[i]==max_int: index=index + ',' + str(i) print ("%s :%d" % (index, max_int)) ``` ::: --- ### **:bulb:檔案:bulb:** #### ==寫入檔案== * write=寫入 * read=讀取 * open=開啟 * close=關閉 * \n=換行 ```py= with open('f.txt','w',encoding='utf-8') as f: # \n=換行 f.write('中壢高商\n') f.write('資料處理科\n') f.write('蔡堯年') ``` #### ==讀取檔案== ```py= f=open('test.txt','r',encoding='utf-8') t=f.readline() while t!="": print (t) a=t.split(",") for i in range(1,4): a[i] = eval(a[i]) t=f.readline() f.close() ``` --- # --0315-- #### ==讀寫資料== ```py= f=open('test.txt', 'r',encoding='utf-8') t=f.readline() all=[] while t!="": # print(t) a=t.split(",") s=0 for i in range(1,4): a[i]=eval(a[i]) s=s+a[i] a.append(s) all.append(a) t=f.readline() f.close() f=open('out.txt','w',encoding='utf-8') for b in all: for c in b: # print(c,end=" ") f.write(str(c)+' ') f.write('\n') f.close() ``` #### ==快速讀寫== :::success ```py= f1=open('test.txt', 'r',encoding='utf-8') f2=open('out.txt','w',encoding='utf-8') t=f1.readline() while t!="": a=t.split(",") s=0 f2.write(a[0]+','+a[1]) for i in range(2,5): a[i]=eval(a[i]) f2.write(','+str(a[i])) s=s+a[i] f2.write(','+str(s)+'\n') t=f1.readline() f1.close() f2.close() ``` ::: --- ### **:bulb:爬蟲:bulb:** #### ==高鐵訂票網站連線== * pip install -U requests=安裝套件 ```py= import requests url="https://irs.thsrc.com.tw/IMINT" h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'} r=requests.get(url,headers=h) print (r) ``` #### ==PTT電影資料解析== * pip install -U beautifulsoup4=安裝套件 ```py= import requests import bs4 url="https://www.ptt.cc/bbs/movie/index.html" h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'} # 連線結果 r=requests.get(url,headers=h) r.encoding='utf-8' st=r.text # 解析結果 root=bs4.BeautifulSoup(st,'html.parser') # print (root.title.string) titles=root.find_all('div',class_="title") print (title.a.string) ``` --- # --0322-- * `F12`➩`Network`➩`F5`➩`Headers`➩`User-Agent:` #### ==PTT電影資料解析== ```py= import requests import bs4 url="https://www.ptt.cc/bbs/movie/index.html" h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'} c=0 output='' while c<5: c=c+1 r=requests.get(url,headers=h) r.encoding='utf-8' st=r.text # 解析結果 root=bs4.BeautifulSoup(st,'html.parser') # print (root.title.string) titles=root.find_all('div',class_="title") for title in titles: if title.a !=None: output+= title.a.text + '\n' # print (title.a.text) # url="https://www.ptt.cc/bbs/movie/index"+str(c)+".html" # h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'} nextlink=root.find('a',string='‹ 上頁') url="http://www.ptt.cc" + nextlink.get('href') f=open('movie.text','w',encoding='utf-8') f.write(output) ``` --- # --0329-- ### :bulb:上機考:bulb: #### ==01.1-20的數字重複次數== ```py= # 導入 random 模組,用於生成隨機數 import random # 生成隨機整數列表 l=[] for i in range(0,10): l.append(random.randint(1,20)) # 輸出隨機整數列表 for x in l: print("%d" % x,end=" ") print() max=0 index="" # 找出出現次數最多的整數 # 1到20的整數範圍 for c in range(1,21): # 如果整數 c 在列表 l 中出現的次數大於目前最大次數 if l.count(c)>max: # 更新最大次數 max=l.count(c) # 更新最多次數的整數 index=str(c) # 如果整數 c 在列表 l 中出現的次數等於目前最大次數 elif l.count(c)==max # 將該整數加入到最多次數的整數列表中 index=index + " , " + str(c) # 輸出結果 print ("%s:%d" % (index, max)) ``` :::spoiler NO註解 ```py= import random l=[] for i in range(0,10): l.append(random.randint(1,20)) for x in l: print("%d" % x,end=" ") print() max=0 index="" for c in range(1,21): if l.count(c)>max: max=l.count(c) index=str(c) elif l.count(c)==max: index=index + " , " + str(c) print ("%s:%d" % (index, max)) ``` ::: #### ==02.檔案讀寫== ```py= f1 = open('test.txt', 'r', encoding='utf-8') f2 = open('014328.txt', 'w', encoding='utf-8') # 讀取 test.txt 檔案的第一行 t = f1.readline() # 進行迴圈,處理每一行的資料 while t != "": # 將每一行的資料以逗號分割成列表 a = t.split(",") s = 0 # 將列表中的第一、第二個元素寫入 014328.txt 檔案 f2.write(a[0] + ',' + a[1]) # 將列表中的第三至第五個元素轉換成整數且總計,並寫入 014328.txt 檔案 for i in range(2, 5): a[i] = eval(a[i]) f2.write(',' + str(a[i])) s = s + a[i] # 寫入加總後的數值並換行 f2.write(',' + str(s) + '\n') # 讀取 test.txt 檔案的下一行 t = f1.readline() f1.close() f2.close() ``` :::spoiler NO註解 ```py= f1 = open('test.txt', 'r', encoding='utf-8') f2 = open('014328.txt', 'w', encoding='utf-8') t = f1.readline() while t != "": a = t.split(",") s = 0 f2.write(a[0] + ',' + a[1]) for i in range(2, 5): a[i] = eval(a[i]) f2.write(',' + str(a[i])) s = s + a[i] f2.write(',' + str(s) + '\n') t = f1.readline() f1.close() f2.close() ``` ::: --- # --0412-- #### ==自由時報抓照片== ```py= import requests import bs4 url="https://img.ltn.com.tw/Upload/ent/page/800/2024/02/29/phpwfkBkg.jpg" h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'} r=requests.get(url,headers=h) print(r) with open('123.jpg',mode='wb') as file: # with open('123.pdf',mode='wb') as file: file.write(r.content) ``` #### ==PTT美女版抓照片== ```py= import requests from bs4 import BeautifulSoup url="https://www.ptt.cc/bbs/Beauty/M.1712837262.A.726.html" h={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'} r=requests.get(url,headers=h,cookies={'over18':'1'}) st=BeautifulSoup(r.text,'html.parser') imgs=st.find_all('img') for img in imgs: # print(img['src']) url=img['src'] pic=requests.get(url) fname=url[-11:] f=open(fname,'wb') f.write(pic.content) f.close() ``` --- # --0419-- #### ==CHROM SELENIUM截圖== * pip install selenium ```py= from selenium import webdriver from selenium.webdriver.chrome.options import Options options=Options() options.chrome_executable_path='C:\0419' driver=webdriver.Chrome(options=options) driver.maximize_window() driver.get('https://www.clvsc.tyc.edu.tw') driver.save_screenshot('1.png') ``` #### ==EDGE SELENIUM截圖== * pip install selenium ```py= from selenium import webdriver from selenium.webdriver.edge.options import Options import time options=Options() options.edge_executable_path='C:\0419' driver=webdriver.Edge(options=options) driver.maximize_window() driver.get('https://www.clvsc.tyc.edu.tw') driver.save_screenshot('2.png') time.sleep(3) ``` # -0502- #### ==迷克夏飲料菜單== ```py= from bs4 import BeautifulSoup import requests url="https://www.milksha.com/products.php" r=requests.get(url) soup = BeautifulSoup(r.text, 'html.parser') titles = soup.find_all("div", class_="col-lg-6 col-md-7") for div in titles: list = div.find("ul", class_="row") if list: items = list.find_all("li") for item in items: drink_name = item.text.strip().replace(" ", "").replace("\n", "") print(drink_name) ```