【Python+爬蟲】爆肝兩個月!拜托三連了!這絕對是全B站最用心(沒有之一)的

txt記的,復(fù)制過來的(不全)
===【print操作】===
print("Hello"+"_World!!")【+連接字符串,Hello_World!!】
print("Let\'s go")【\轉(zhuǎn)義字符,使\'或\"為一個整體】
print("Hello!\nHi!")【\n表示換行】
print("\n")【直接搞出一個空行】
print("""Hello!
Hi!""")【叁引號自動換行('和"皆可)】
===【變量】===
變量名=114514【賦值操作,變量必須 先賦值后使用】
【寫代碼時在部分位置用空格隔開可以使代碼更美觀】
【變量名不可以包含空格、不可以用數(shù)字開頭、不可以用""或''包裹、不可以包含除_以外的符號、不可以占用python關(guān)鍵字(如print)】
【非常不建議用拼音,用英文加數(shù)字較好,即使可以用漢字也盡量不要使用】
【注意大小寫區(qū)分user_age≠user_Age】
【關(guān)鍵字】False、None、Ture、and、as、assert、async、await、break、class、continue、def、del、elif、else、except、finally、for、from、global、if、import、in、is、lambda、nonlocal、not、or、pass、raise、return、try、while、with、yiled。
my_love="114514"
my_ex=my_love
my_love="1919810"【最終結(jié)果my_love="1919810"、my_ex="114514"】
===【數(shù)學(xué)運算】===
【加號】+【減號】-【乘號】*【除號】/【乘方】**
import math【導(dǎo)入(數(shù)學(xué))庫】
math.函數(shù)名(...)【來使用(數(shù)學(xué))庫的功能】
===【注釋】===
#【注釋,也可用來跳過本行代碼執(zhí)行】
選中一段代碼【快捷鍵[ctrl]+[/?]】使整段代碼每行前加#,再按一次取消。
單獨使用叁引號('''或""")也可以起到多行注釋的效果
===【數(shù)據(jù)類型】===
字符串【str】"Hello"?"你好!"
len('Hello')【得到該字符串長度:5】【一個空格或完整的轉(zhuǎn)義符占一個長度,\n占一個長度】
"Hello"[3]【從0(索引值)開始計數(shù),得到第四個字符】
整數(shù)【int】6?-32
浮點數(shù)【float】6.0?10.07
布爾類型【bool】Ture?False
空值類型【NoneType】None
【用來代替一個尚不知道的變量的值】
使用【type函數(shù)】【type(數(shù)據(jù)類型)】可以得到【<class'數(shù)據(jù)類型'>】
===【Python模式】===
【命令行模式】逐行翻譯執(zhí)行
【交互模式】【>>>】完成后回車立刻執(zhí)行,不需要創(chuàng)建Python文件就可運行,不需要print就可看到值,但命令不會被保存。
【quit()】或【[ctrl]+[D]】退出【交互模式】
===【input獲取用戶輸入】===
user_age = input("請輸入您的年齡:")
print( "知道了,你今年" + user_age +"歲了!")
【input只返回字符串類型的數(shù)據(jù)】
print(int("user_age"))【把數(shù)據(jù)類型轉(zhuǎn)換為整數(shù)(它必須確實可以被轉(zhuǎn)換)并打印】
===【條件語句】===
if 【條件】【Ture或False】:
??【Ture執(zhí)行語句】【#建議縮進(jìn)4個空格】
else:
??【False執(zhí)行語句】
【比較運算符】
等于【==】不等于【!=】
大于【>】大于等于【>=】
小于【<】小于等于【<=】
===【嵌套條件語句】===
【多個條件判斷】
if 【條件一】:
??【語句A】
elif 【條件二】:
??【語句B】
elif 【條件三】:
??【語句C】
else:
??【語句D】
!?。∽⒁猓。。 緱l件是按順序判斷的,一旦判斷成功就直接執(zhí)行,接下來的條件無論真假都不會判斷】
===【邏輯運算】===
與【and】【全Ture返回Ture,否則返回False】
或【or】【全False返回False,否則返回Ture】
非【not】【只對一個對象返回值,原對象為Ture返回False,為False則返回Ture】
【邏輯優(yōu)先級】( )>not>and>or
===【數(shù)據(jù)結(jié)構(gòu)】===
s="Hello"
print(s.upper())【使字符串內(nèi)字母全大寫,輸出HELLO】
【 [ 列表 ] 】【可改變】
【.append 添加元素】
shopping_list =["鍵盤"]
shopping_list.append("顯示器")【列表里的內(nèi)容已經(jīng)被改變】
print ( shopping_list)
【.remove 刪除元素】
shopping_list =["鍵盤","顯示器"]
shopping_list.remove("顯示器")
【len函數(shù)返回列表元素個數(shù)】
shopping_list =["鍵盤","顯示器","硬盤"]
len(shopping list)【返回 3】
【列表 [ 索引 ] 】
shopping list =["鍵盤","顯示器","硬盤"]
print( shopping_list[0])
【 [ 索引賦值 ] 更改】
shopping_list = ["鍵盤",“顯示器","硬盤"]
shopping_list[1] ="音響"【索引為1的元素被更改】
print(shopping list)
num_list = [1,13,-7,2,96]
print(max( num_list))【打印列表里的最大值】
print(min(num_list))【打印列表里的最小值】
print(sorted (num_list))【打印排序(從小到大)好的列表】
===【字典】===
鍵【key】【用來查找值】【不可變(列表不能作為鍵)】
值【value】
slang_dict={"鍵A":"值a"
??????????"鍵B":"值b"}【{"鍵":"值"}創(chuàng)建字典】
contacts = {"小明":"13700000000"
?????????"小花":"13700000001"}
【元組tuple】【整個作為鍵】
example_tuple =("鍵盤","鍵帽")
contacts["美女A"]= "18600000000"【增加或覆蓋】
print("小明" in contacts)?
print("小明明” in contacts)【檢查字典中是否包含該鍵,有Ture,沒False】
del contacts["小明"]【刪除對應(yīng)的鍵值對】
len(contacts)【len函數(shù)可以返回字典中鍵值對數(shù)量】
===【for循環(huán)進(jìn)行迭代(按順序執(zhí)行什么)】===
for 【變量名】 in 【可迭代對象】:【#對每個變量做一些事情#】
??【執(zhí)行語句】
range(5,10,1)【5是起始值,10是結(jié)束值(該值不包含在內(nèi)),1是步長(1通常省略)】
for i in range(5,10):
??print( i )【i會依次被賦值為從5到9的數(shù)字】
===【while循環(huán)】===
while 【條件A】:
??【行動B】
list1 =["你",“好","嗎","兄","弟"]
【for循環(huán)】
for char in list1:
??print (char)
【for加range】
for i in range(len(list1)):
??print(list1[i])
【while循環(huán)】
i = 0
while i < len( list1):
??print ( list1[i])
??i=i+1
total = total+num
total += num【這兩句是一樣的】
===【format方法】===
message content ="""
律回春漸,新元肇啟。
新歲甫至,福氣東來。
金{0}賀歲,歡樂祥瑞。
金{0}敲門,五福臨門。
給{1}及家人拜年啦!
新春快樂,{0}年大吉!
""".format( year, name )【0對應(yīng)year,1對應(yīng)name】
message content ="""
律回春漸,新元肇啟。
新歲甫至,福氣東來。
金{year}賀歲,歡樂祥瑞。
金{year}敲門,五福臨門。
給{name}及家人拜年啦!
新春快樂,{year}年大吉!
""".format( name=name,year=year )【name關(guān)鍵字=name參數(shù)值】
【f-字符串】【直接求值加入字符串】
message content =f"""
律回春漸,新元肇啟。
新歲甫至,福氣東來。
金{year}賀歲,歡樂祥瑞。
金{year}敲門,五福臨門。
給{name}及家人拜年啦!
新春快樂,{year}年大吉!
"""
【指定浮點數(shù)在格式化時保留幾位小數(shù) :.2f 保留2位小數(shù)】
gpa_dict = {"小明":3.251,"小花":3.869,"小李":2.683,
?????????"小張":3.685}
for name, gpa in gpa_dict.items():
print( "{0}你好,你的當(dāng)前績點為:{1: .2f } ".format(name,gpa))
===【定義函數(shù)def】===
def calculate_sector_1 ( )∶
#接下來是一些定義函數(shù)的代碼
central_angle_1 = 160
radius_1 = 30
sector_area_1 = central_angle_1 / 360 *3.14*radius_1**2
print(f"此扇形面積為:{sector_area_1}")
【更通用的改進(jìn)】
def calculate_sector( central_angle,radius ) :
??sector_area = central_angle / 360* 3.14 *radius **2
??print(f"此扇形面積為:{sector_area}")【def完了】
calculate_sector (160,30)【調(diào)用函數(shù)】
def func():
??a=3
??print(a)
??return a【返回變量a的值,即整數(shù)3】
【return可以使結(jié)果用到變量賦值上】
===【引入模塊】===
【import 語句】
import statistics
print(statistics.median( [19,-5,36]))
print(statistics.mean( [19,-5,36]))
【from...import...語句】
from statistics import median, mean
print(median( [19,-5,36]))
print(mean( [19,-5,36]))
【from...import *】【可能造成沖突,不建議使用】
from statistics import *
print(median( [19,-5,36]))
print(mean( [19,-5,36]))
===【面向?qū)ο缶幊獭?==
【# 定義ATM類】
class ATM:
??def __init__( self,編號,銀行,支行)∶
????self.編號=編號
????self.銀行=銀行
????self.支行=支行
【#創(chuàng)建兩個ATM對象】
atm1 = ATM("001","招商銀行","南園支行")
atm2 = ATM("002","中國銀行 ","北園支行")
【實例】
#1.屬性包括學(xué)生姓名、學(xué)號,以及語數(shù)英三科的成績
#2.能夠設(shè)置學(xué)生某科目的成績
#3.能夠打印出該學(xué)生的所有科目成績
class Student:
??def __init__(self, name,student_id):
????self.name = name
????self.student_id = student_id
????self.grades ={"語文":0,"數(shù)學(xué)":0,"英語":0}
??def set_grade(self, course,grade):
????if course in self.grades:
??????self.grades[course] = grade
??def print_grades(self):
????print(f"學(xué)生{self.name}(學(xué)號:{self.student_id})的成績?yōu)?")
????for course in self.grades:
??????print(f"{course}: {self.grades[course]}分")
===【繼承】===
super().__init__()【調(diào)用父類的構(gòu)造函數(shù)】
【open函數(shù)】
open( "/ usr/demo/data.txt", "r")
【r】讀取模式(只讀)【不寫默認(rèn)r】
【w】寫入模式(只寫)
【a】結(jié)尾補(bǔ)寫
open( " ./ data.txt", "r", encoding="utf-8")
【encoding="XXX"】編碼方式
===【read方法】===
f = open( "./data.txt","r", encoding="utf-8")
print(f.read())
f = open( "./data.txt","r", encoding="utf-8")
print( f.read())【# 會讀全部的文件內(nèi)容,并打印】
print(f.read())【#會讀空字符串,并打印】
f = open( "./data.txt","r" , encoding="utf-8")
print(f.read(10))【#會讀第1-10個字節(jié)的文件內(nèi)容】
print(f.read(10))【#會讀第11-20個字節(jié)的文件內(nèi)容】
===【readline方法】===
f = open( "./data.txt","r", encoding="utf-8")
print(f.readline())【 #會讀一行文件內(nèi)容,并打印】
print(f.readline())【# 會讀一行文件內(nèi)容,并打印】
f = open( "./data.txt", "r",encoding="utf-8")
line = f.readline()【#讀第一行】
while line != "":【#判斷當(dāng)前行是否為空】
??print(line)【#不為空則打印當(dāng)前行】
??line = f.readline()【#讀取下一行】
f = open( " ./ data.txt", "r", encoding="utf-8")
【# readlines會讀全部文件內(nèi)容,并把每行作為列表元素返回】
print(f.readlines())
f = open( " ./ data.txt","r", encoding="utf-8")
lines = f.readlines()【#把每行內(nèi)容儲存到列表里】
for line in lines:【#遍歷每行內(nèi)容】
??print(line)【#打印當(dāng)前行】
【實例1】
f = open(" ./data.txt","r",encoding="utf-8")
content = f.read()
print(content)
f.close()【#關(guān)閉文件釋放資源】
【實例2】
with open(" ./data.txt","r",encoding="utf-8"') as f:
??content = f.read()
??print(content)
with open( "./data.txt","r+", encoding="utf-8" ) as f:
【#使用r+就可又讀又寫】
??print(f.read())
??f.write("hello! ")
===【捕捉異?!?==
try:
??user_weight = float(input("請輸入您的體重(單位:kg): ))
??user_height = float( input("請輸入您的身高(單位:m): ))
??user_BMI = user_weight / user_height ** 2
except ValueError:
??print("輸入不為合理數(shù)字,請重新運行程序,并輸入正確的數(shù)字。")
except ZeroDivisionError:
??print("身高不能為零,請重新運行程序,并輸入正確的數(shù)字。")
except:
??print("發(fā)生了未知錯誤,請重新運行程序。")
else:
??print("您的BMI值為:" + str(user__BMI))
finally:
??print("程序結(jié)束運行。")【#finally一定會執(zhí)行】
===【bug】===
【assert】斷言
【unittest就是一個很常用的Python單元測試庫】
【test_作為測試文件名的開頭】
【assertEqual(A, B)】類似于【assert A==B】
【assertTrue(A)】類似于【assert A is True】
【assertln(A, B)】類似于【assert A in B】
【assertNotEqual(A, B)】類似于【assert A !=B】
【assertFalse(A)】類似于【assert A is False】
【assertNotln(A, B)】類似于【assert A not in B】
【assertTrue(2 not in [1,3-1])】和【assertNotln(2,[1,3 -1])】都是在驗證2是否不存在于[1,2]這個列表里。