Python

文章目录

  • Python
    • __init__、__new__和__call__
    • 型態
      • len(資料)
      • Tuple
      • 特殊字串
      • 成員運算子
    • input
    • 集合Set 基本語法
      • Set 運算子
    • 字典Dictionary 基本語法
    • 判斷式
      • 四則運算
    • 流程控制:迴圈基礎
      • range()
      • while 迴圈
      • for 迴圈
      • break
      • continue
      • else
      • 綜合範例
    • 函式
      • 1. 定義函式
      • 2. 定義參數的預設值
      • 使用參數名稱對應
      • 無限/不定 參數資料
      • torch.nn.funtional.softmax()
      • map(function, iterable, ...)
      • lambda教學結合map,sort
    • Data Structure - 資料結構
    • 安裝第三方套件
      • 安裝BeautifulSoup
    • Module 模組
      • 載入
      • 使用
      • 內建模組 - sys 模組
      • 自訂模組的設計
        • 建立幾何運算模組
        • 載入
        • 調整搜尋模組的路徑
    • 封包的設計與使用
      • 建立封包
      • 使用封包
    • 讀取、儲存文字檔案
      • 開啟檔案
      • 最佳實務:使用 with ... as ... 語法
      • 讀取檔案
      • 寫入檔案
      • 關閉檔案
        • 範例
        • 使用JSON格式讀取,複寫檔案
    • Class的定義與使用
      • class定義
      • class使用
    • 實體物件的建立與使用
      • 建立實體物件
      • 使用實體
      • 實體方法
      • 使用實體方法
    • 網路連線程式、公開資料串接
      • 確認公開資料格式
      • 載入urllib模組、下載特定網址資料
      • 網路連線
      • 串接,擷取公開資料
    • 網路爬蟲 Web Crawler
      • 抓取的網頁,取得網址
      • 安裝BeautifulSoup
      • 實務操作:抓取 [PTT 電影版](https://www.ptt.cc/bbs/movie/index.html)的文章標題
        • 看起來像人類
      • 解析原始碼
      • Cookie 操作實務
        • 追蹤網頁連結
      • 連續抓取頁面實務
        • ptt八卦板
        • 觀察網路連線
        • 不斷抓別的頁面
        • PTT 八卦板 連續抓3頁標題
      • AJAX / XHR 網站技術分析實務
        • Medium 文章列表 (舊版)
        • 抓取知名網站medium.com的首頁文章列表
      • Request Data 操作實務
        • 抓取 Medium.COM 網站的文章列表資料 2021 版
        • 抓取 Medium.COM 網站實務操作
    • Flask 網站架設
      • 基礎環境建置
      • Heroku 雲端主機教學
        • 建立檔案
        • 安裝[Git Tool](https://git-scm.com/)
        • 註冊[Heroku](https://www.heroku.com/)
        • 安裝Download and install the [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli#download-and-install)
        • Heroku 專案
        • 如果修改程式,還沒反應到線上
      • argparse
        • tags: `Python`

:::info PPT
課程

PPT檢視文檔

Python 基礎 - 複習

排版教學
HackMD完整功能
:::


:::warning
VScode python
Shift + Alt + F自動排版
ctrl+C強制結束
ctrl+/全部註解
:::


initnew__和__call

https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/364923/

https://ithelp.ithome.com.tw/m/articles/10231756

型態

  • int (整數)
  • float (浮點數)
  • bool (布林值)
  • str (字串)
  • List(列表) : [ ]
  • Tuple(元组) : ( ) 不能更動裡面的內容
  • Dictionary(字典) : { }
  • None(空)

len(資料)

回傳(字數、list等)長度或項目個數。


Tuple

元組基本語法

變數 = (東西1, 東西2, ...)

元組中只包含一個元素
需要在元素後面加逗號(,)

tup = (50,)

特殊字串

如果字串裡面有包含特殊字元

要使用脫逸字元 反斜線

\


成員運算子

運算子 意義
in 在指定的序列中找到值返回True,否則返回False
not in 指定的序列中沒有找到值返回True,否則返回False
s=[1,2,3]
print(3 in s)
#print True

input

取得字串形式的使用者輸入

x=input("請輸入數字:")
x=int(x) #將字串轉換成數字型態

集合Set 基本語法

自動把字串拆解成集合

set("字串")
s=set("Hello")
print(s)
# print {'l','H','e','o'} :順序是隨機的print("H" in s) #print True

Set 運算子

運算子 意義
& 交集: 取兩個集合中,相同的資料
| 聯集: 取兩個集合中的所有資料,但不重複取
- 差集: 從S1中,減去和S2重疊的部分
^ 反交集: 取兩個集合中,不重疊的部分

字典Dictionary 基本語法

key-value 配對

變數 = {key1:value1, key2:value2, ...}

key是唯一的,如果重複,最後一個key的value會代替前面的
value可以重複沒關係


只能用key去拿value
所以要修改value時,只能用key去找

也可以用 in去搜尋key值


刪除字典中的key-value pair

del dic["key"]

從列表的資料產生字典

dic={x:x*2 for x in 列表}

範例

dic={"apple":"蘋果","bug":"蟲蟲"} #字典
# key: apple,bug
print(dic["apple"]) #print 蘋果#刪除apple鍵值對
del dic["apple"] #轉換鍵值對
dic={x:x*2 for x in [3,4,5]}
print(dic)
# print {3: 6, 4: 8 ,5: 10}

判斷式

if (條件式一):條件式一成立,要做的事elif (條件式二):條件式二成立,要做的事else:上述條件式都不成立,要做的事

要記得加 :


四則運算

n1=int(input("請樹入數字1:"))
n2=int(input("請樹入數字2:"))
op=input("請樹入運算: +, -, *, /")if op=="+":print(n1+n2)
elif op=="-":print(n1-n2)
elif op=="*":print(n1*n2)
elif op=="/":print(n1/n2)
else:print("不支援")

流程控制:迴圈基礎


range()

# 不包含3
for 變數名稱 in range(3):||for 變數名稱 in [0,1,2]:
# 不包含6
for 變數名稱 in range(3, 6):||for 變數名稱 in [3,4,5]:

while 迴圈

while迴圈基本語法

while (條件):條件成立要做的事

for 迴圈

for迴圈基本語法

for 變數 in 列表或字串:要做的事
for c in "Hello":print("逐一取得字串中的字元",c)"""
H
e
l
l
o
"""

要記得加 :


break

強制結束迴圈

n=1
while n<5:if n==3:breakn+=1
print(n) #print 3

continue

強制執行下一圈
忽略接下來的程式,跳進下一圈迴圈

範例

n=0
for x in range(4):if x%2==0:# if True 直接進入下一圈,不執行n+=1continue    #if 偶數,直接跳新迴圈print(x)    #列出非偶數n+=1        #計算非偶數數量
print("最後的 n:",n)

else

迴圈結束前執行此區塊的命令

while 布林值:...
else:迴圈結束前執行此區塊的命令
for 變數 in 列表或字串:要做的事
else:迴圈結束前執行此區塊的命令

要記得加 :

:::info
用break強制結束迴圈時,不會執行else區塊
:::


綜合範例

找出整數平方根

輸入9. 得到 3.
輸入11 得到"沒有"整數平方根

n=int(input("請輸入數字"))
for i in range(n):if i*i == n:print("找到整數平方根",i)break
else:   #全部迴圈跑完之後,沒有執行到break 才會進入此區塊print("沒有 整數平方根")

函式

1. 定義函式

    def 函式名稱(參數名稱):內部程式碼return 資料 #or 結束函式,回傳None

要記得加 :

2. 定義參數的預設值

def 函式名稱(參數名稱=預設資料):內部程式碼return 資料

:::info
example

def power(base ,exp=0):print(base**exp)power(3,2)  # print 9
power(4)    # 少一個參數,用預設值

:::


  1. 回傳與回傳值
    2.1 使用 return 結束函式
    2.2 使用 return 定義回傳值
    2.3 呼叫函式後,如何串接回傳值

    def add(n1, n2):result = n1+n2return result# call func. get return
    value=add(3,4)
    print(value)
    # print 7
    

使用參數名稱對應

呼叫函式,以參數名稱對應資料

def 函式名稱(名稱1,名稱2):內部程式# 呼叫函式,以參數名稱對應資料
函式名稱(名稱2=3,名稱1=5)
def divide(n1,n2):result=n1/n2print(result)divide(2,4) #印出0.5
divide(n2=2,n1=4) #print 2.0

無限/不定 參數資料

在參數名稱前面加*

def 函式名稱(*無限參數):    #在參數名稱前面加*無限參數以Tuple資料形態處理函式內部的程式碼# 呼叫函式,可傳入無線數量的參數
函式名稱(資料1,資料2,資料3)
# 函式接受無限參數msgs
def say(*msgs):#Tuple的方式處理for msg in msgs:print(msg)
#呼叫函式,傳入三個參數資料
say("Hello","Arbitrary","Arguments")# 平均數
def avg(*nums):sum=0for n in nums:    # 把Tuple中的資料拿出來放入nsum=sum+nreturn sum/len(nums)

:::info
更多

  1. 函式的目的:包裝需要重複利用的程式碼。
  2. 參數的目的:替函式加入更多彈性。
  3. 回傳值的目的:將函式內部的資料傳遞出來。
    :::

範例 SUM

def calculate(n):sum=0for i in range(1,n+1):sum=sum+ireturn sumprint(calculate(10))

要記得加 :


torch.nn.funtional.softmax()

torch.nn.functional.Softmax(input,dim=1)

要注意的是当dim=0时, 是对每一维度相同位置的数值进行softmax运算,举个栗子:

每一个维度(2,3)对应的数值相加为1,例如:

在第0维度中:

  • [0][0][0]+[1][0][0]=0.0159+0.9841=1
  • [0][0][1]+[1][0][1]=0.6464+0.3536=1

在第1维度中:

  • [0][0][0]+[0][1][0]=0.1058+0.8942=1

在第2维度中:

  • [1][0][0]+[1][1][0]=0.3189+0.6811=1

map(function, iterable, …)

https://www.runoob.com/python/python-func-map.html

input = [1, 2, 3, 4, 5]
output = list(map(lambda x: x+1, input))
print(output)
>>> [2, 3, 4, 5, 6]

参数

  • function – 函数
  • iterable – 一个或多个序列

返回值

  • Python 2.x 返回列表。
  • Python 3.x 返回迭代器(iterator)。

map使用教學

lambda教學結合map,sort


Data Structure - 資料結構

https://algorithm.yuanbin.me/zh-tw/basics_data_structure/linked_list.html#python


安裝第三方套件

PIP 套件管理工具
安裝python時,就一起安裝在你的電腦裡了
python 加入環境變數path中 才能使用pip指令 > https://hackmd.io/@yizhewang/B1zdXG4br

安裝BeautifulSoup

pip install beautifulsoup4

解讀 HTML 格式 > 使用第三方套件 BeautifulSoup 來做解析


Module 模組

載入

# 載入
import 模組名稱# 載入+幫模組取別名
import 模組名稱 as 模組別名

使用

模組名稱/別名.函式名稱(參數資料)模組名稱/別名.變數名稱

內建模組 - sys 模組

取得系統相關資訊

# 載入sys模組
import syssys.platform    #系統作業系統
sys.maxsize    #整數型態最大值
sys.path    #模組路徑||# 別名
import ss.platform    #系統作業系統
s.maxsize    #整數型態最大值
s.path    #模組路徑

自訂模組的設計

建立幾何運算模組

  • 建立新的geo.py檔案
# 在geo模組中定義幾何運算功能# 計算2點間距離
def distance(x1,y1,x2,y2):return ((x2-x1)**2+(y2-y1)**2)**0.5#計算line斜率
def slope(x1,y1,x2,y2):return (y2-y1)/(x2-x1)

載入

  • 在主程式.py中,輸入import (同個路徑)
import geo
result=geo.distance(1,1,5,5)
print(result)

調整搜尋模組的路徑

在模組的搜尋路徑列表中【新增路徑】

sys.path.append("名稱")# 當前路徑下,再加上"名稱"
# 讓python去找"名稱"的資料夾

在專案資料夾中建立一個module資料夾,專門放模組用,但是路徑會跑掉

import sys# 搜尋模組的路徑
print(sys.path)    #印出模組的搜尋路徑
# 會印出一個列表,python搜尋模組的位址全部列出來#調整路徑
sys.path.append("modules")    # 當前路徑下在+上modulesimport geo

封包的設計與使用

包含模組的資料夾
用來整理分類模組程式

檔案系統中的檔案對應到模組
檔案系統中的資料夾對應到python的封包


建立封包

專案檔案配置

  • 專案資料夾

    • 主程式.py
    • 封包資料夾
      • __init __.py (有這個才會被當作封包)
      • 模組一.py
      • 模組二.py

如果沒有__init __.py,該資料夾會被視為普通的資料夾

專案檔案配置範例

  • 專案資料夾

    • main.py
    • geometry
      • __init __.py
      • point.py
      • line.py

使用封包

import某個封包中的模組

import 封包名稱.模組名稱import 封包名稱.模組名稱 as 模組別名封包名稱.模組名稱.函式

範例

  1. 先建立一個新的資料夾 geometry
  2. 在資料夾中建立一個檔案__init__.py (geometry變成"封包"了)
  3. 在封包中建立新的模組 line.py , point.py
    # point.py
    def distance(x,y):return (x**2+y**2)**0.5
    
    # line.py
    def len(x1,y1,x2,y2):return (((x2-x1)**2)+((y2-y1)**2))**0.5def slope(x1,y1,x2,y2):return (y2-y1)/(x2-x1)
    
    # main.py主程式
    import geometry.point
    import geometry.line#使用模組
    result=geometry.point.distance(3,4)
    print(result)result=geometry.line.slope(1,1,3,3)
    print("slope:",result)# 名字太長 使用別名
    import geometry.point as point
    result=point.distance(3,4)
    print(result)
    

讀取、儲存文字檔案

開啟檔案 > 讀取或寫入 > 關閉檔案

開啟檔案

檔案物件=open(檔案路徑,mode=開啟模式,encoding=文字編碼)
開啟模式 意思
r 讀取模式
w 寫入模式
r+ 讀寫模式
utf-8 中文/日文編碼

最佳實務:使用 with … as … 語法

:::info
最佳實務
用檔案物件去操作檔案,會自動關閉檔案且安全

with open(檔案路徑, mode=開啟模式) as 檔案物件:讀取或寫入檔案的程式
#以上區塊會自動、安全的關閉檔案

:::

要記得加 :


讀取檔案

  • 讀取全部文字

    檔案物件.read()
    
  • 一次讀取一行
    for 變數 in 檔案物件:從檔案依序讀取每行文字到變數中
    
  • 讀取 JSON 格式
    import json    #載入json模組
    讀取到的資料=json.load(檔案物件)
    

寫入檔案

  • 寫入文字

    檔案物件.write(字串)
    
  • 寫入換行符號

    檔案物件.write("這是範例文字\n")
    
  • 寫入 JSON 格式

    import json
    json.dump(要寫入的資料, 檔案物件)
    

關閉檔案

檔案物件.close()

範例

# 存檔案
file=open("data.txt" , mode="w",encoding="utf-8")    #開啟 #寫入中文需要用utf-8開啟
file.write("Hello file\nSecond 好棒棒")    #操作
file.close()    #關閉# 最佳實務:存檔案
with open("data.txt", mode="w",encoding="utf-8") as file:file.write("5\n3")
# 以上區塊會自動、安全的關閉檔案,不需要自己close# 最佳實務:讀檔案
with open("data.txt", mode="r",encoding="utf-8") as file:data=file.read()    #一次把所有資料讀出來
print(data)# 打算把file裡面的數字一行行讀出來,並計算總合
sum=0
with open("data.txt", mode="r",encoding="utf-8") as file:for line in file:    #一行行讀取sum+=int(line)    #把數字讀出加總
print(sum)

使用JSON格式讀取,複寫檔案

先建立一個檔案 config.json在路徑中

【繁中】Python 教學 爬蟲基礎相关推荐

  1. 骚年,还在为歌荒发愁吗?python教你爬取网易云热门歌单

    需求分析 每当歌荒时,总想找那些播放量比较高的歌单听,毕竟这么多人选择的歌单歌曲质量总会有保证. 爬取目标 本文将提取网易云音乐 播放量在1000万 以上的歌单名称,播放量和链接地址. 准备工作 保证 ...

  2. python爬取工资_找工作如何和HR谈薪资,python教你爬取行业标准工资

    找工作不可避免的要涉及到薪酬问题,如何沟通才能最大程度达到自己的预期? 同样level的公司,有人年薪十几万,有的人插了个草标就把自己卖了,面试中被问到具体的薪资数目.常常会陷入要价太高(或者太低)的 ...

  3. Python教你爬取某团烤肉店铺数据信息并实现数据可视化,吃货还是更多的(内含完整代码)

    [课 题]: Python爬取某团店铺数据信息并实现数据可视化 [课程亮点] 1.动态数据抓包演示 2.json数据解析 3.requests模块的使用 4.保存csv [环境介绍] python 3 ...

  4. python爬取股吧评论_神级的爬虫工程师用Python教你爬取全站股票评论!买哪只有底呢!...

    爬取思路是这样的,先挖取所有股票的代码,放进数据库,然后根据股票代码爬取每一只股票的评论,多了,一定要加入代理池,我这里用的上上一篇文章写的代理池,我们给每个股票代码赋予一个状态值,一开始是outst ...

  5. python爬取酷狗付费音乐_python爬蟲教程:爬取酷狗音樂

    在常見的幾個音樂網站里,酷狗可以說是最好爬取的啦,什么彎都沒有,也沒加密啥的,所以最適合小白入門爬蟲 本篇針對爬蟲零基礎的小白,所以每一步驟我都截圖並詳細解釋了,其實我自己看着都啰嗦,歸根到底就是兩個 ...

  6. Unity官方教學專案 - Character Customization (紙娃娃系統)

    專案名稱 : 自訂角色 (Character Customization) 內容描述 : 這個教學專案包含了二個部份,一個是角色建立系統(Avatar Creater),另一個是虛擬世界角色產生系統, ...

  7. 用免費的電腦資源協助數學的教學,學習與探索_復華中學教師營_中山大學應數系高中數學人才班_2021

    "Talk is cheap. Show me the code." ― Linus Torvalds 摘要: 直到, 在學習 R 語言的過程, 才發現有 Markdown 這種文 ...

  8. PHP Plurk Api基礎教學(一) - 如何製作自動發噗機器人

    PHP Plurk Api基礎教學(一) - 如何製作自動發噗機器人 1.第一步 到Plurk PHP APi Google code官網下載最新的PHP API 上面的連結是1.6.2版(聽說已經是 ...

  9. 摆脱剧荒!教你用 Python 一步步爬取豆瓣电影新榜单

    本文以豆瓣电影(非TOP250)为例,从数据爬取.清洗与分析三个维度入手,详解和还原数据爬取到分析的全链路. 作者 | 周志鹏 责编 | 郭   芮 旁友,暑假,已经过了一大半了. 这个遥远而炙热的名 ...

最新文章

  1. 一文看懂集成学习(详解 bagging、boosting 以及他们的4点区别)
  2. (转)NGUI研究院之三种方式监听NGUI的事件方法
  3. JS 提交form表单
  4. 下载和安装Nginx之添加Nginx作为系统服务(CentOS7为例)
  5. 将 ASP.NET Core 2.1 升级到最新的长期支持版本ASP.NET Core 3.1
  6. GIS实用小技巧(三)-CASS怎么添加图例?
  7. 装机之MBR和GPT
  8. 获取数据 - 将Excel文件读入矩阵matrix中 - Python代码
  9. c语言around用法,KET基础语法:介词among和around的用法及例句
  10. Apache NIO 框架 Mina 使用中出现 too many open files 有关...
  11. 某合资源网4.5主题 完美无错版 emlog模板
  12. 物联网卡对企业设备的重要性
  13. numpy mean
  14. java金蝶云单据查询_如果在单据上查或下查的“单据关联”界面添加功能
  15. 【Luogu】重返现世
  16. 大数据BI框架知识点备注
  17. html5作品欣赏,8个超棒的HTML5网站设计欣赏
  18. 华为od机考真题-统计射击比赛成绩
  19. pytest常用参数
  20. batch软件功能测试,Batch SMART 最强序列特征[结构域]预测软件

热门文章

  1. Mathcad求解一元二次方程
  2. kubernetes监控检查(探针)
  3. 北京大学研制成铷原子钟——三千年误差不到一秒
  4. win7系统 (32位)安装包
  5. 606. 根据二叉树创建字符串(视频讲解!!!)
  6. 电影-《满城尽带黄金甲》
  7. TCRT5000循迹模块原理及应用
  8. 陳三甲网络笔记:赚钱这件事,你别搞复杂了,简单点
  9. 读研期间学计算机,你不知道的考研事之读研期间学习生活大揭秘(学习篇)
  10. 徽章合成功能(类似支付宝集五福)