【Python+爬虫】爆肝两个月!拜托三连了!这绝对是全B站最用心(没有之一)的

txt记的,复制过来的(不全)
===【print操作】===
print("Hello"+"_World!!")【+连接字符串,Hello_World!!】
print("Let\'s go")【\转义字符,使\'或\"为一个整体】
print("Hello!\nHi!")【\n表示换行】
print("\n")【直接搞出一个空行】
print("""Hello!
Hi!""")【叁引号自动换行('和"皆可)】
===【变量】===
变量名=114514【赋值操作,变量必须 先赋值后使用】
【写代码时在部分位置用空格隔开可以使代码更美观】
【变量名不可以包含空格、不可以用数字开头、不可以用""或''包裹、不可以包含除_以外的符号、不可以占用python关键字(如print)】
【非常不建议用拼音,用英文加数字较好,即使可以用汉字也尽量不要使用】
【注意大小写区分user_age≠user_Age】
【关键字】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"【最终结果my_love="1919810"、my_ex="114514"】
===【数学运算】===
【加号】+【减号】-【乘号】*【除号】/【乘方】**
import math【导入(数学)库】
math.函数名(...)【来使用(数学)库的功能】
===【注释】===
#【注释,也可用来跳过本行代码执行】
选中一段代码【快捷键[ctrl]+[/?]】使整段代码每行前加#,再按一次取消。
单独使用叁引号('''或""")也可以起到多行注释的效果
===【数据类型】===
字符串【str】"Hello" "你好!"
len('Hello')【得到该字符串长度:5】【一个空格或完整的转义符占一个长度,\n占一个长度】
"Hello"[3]【从0(索引值)开始计数,得到第四个字符】
整数【int】6 -32
浮点数【float】6.0 10.07
布尔类型【bool】Ture False
空值类型【NoneType】None
【用来代替一个尚不知道的变量的值】
使用【type函数】【type(数据类型)】可以得到【<class'数据类型'>】
===【Python模式】===
【命令行模式】逐行翻译执行
【交互模式】【>>>】完成后回车立刻执行,不需要创建Python文件就可运行,不需要print就可看到值,但命令不会被保存。
【quit()】或【[ctrl]+[D]】退出【交互模式】
===【input获取用户输入】===
user_age = input("请输入您的年龄:")
print( "知道了,你今年" + user_age +"岁了!")
【input只返回字符串类型的数据】
print(int("user_age"))【把数据类型转换为整数(它必须确实可以被转换)并打印】
===【条件语句】===
if 【条件】【Ture或False】:
【Ture执行语句】【#建议缩进4个空格】
else:
【False执行语句】
【比较运算符】
等于【==】不等于【!=】
大于【>】大于等于【>=】
小于【<】小于等于【<=】
===【嵌套条件语句】===
【多个条件判断】
if 【条件一】:
【语句A】
elif 【条件二】:
【语句B】
elif 【条件三】:
【语句C】
else:
【语句D】
!!!注意!!!【条件是按顺序判断的,一旦判断成功就直接执行,接下来的条件无论真假都不会判断】
===【逻辑运算】===
与【and】【全Ture返回Ture,否则返回False】
或【or】【全False返回False,否则返回Ture】
非【not】【只对一个对象返回值,原对象为Ture返回False,为False则返回Ture】
【逻辑优先级】( )>not>and>or
===【数据结构】===
s="Hello"
print(s.upper())【使字符串内字母全大写,输出HELLO】
【 [ 列表 ] 】【可改变】
【.append 添加元素】
shopping_list =["键盘"]
shopping_list.append("显示器")【列表里的内容已经被改变】
print ( shopping_list)
【.remove 删除元素】
shopping_list =["键盘","显示器"]
shopping_list.remove("显示器")
【len函数返回列表元素个数】
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"}【{"键":"值"}创建字典】
contacts = {"小明":"13700000000"
"小花":"13700000001"}
【元组tuple】【整个作为键】
example_tuple =("键盘","键帽")
contacts["美女A"]= "18600000000"【增加或覆盖】
print("小明" in contacts)
print("小明明” in contacts)【检查字典中是否包含该键,有Ture,没False】
del contacts["小明"]【删除对应的键值对】
len(contacts)【len函数可以返回字典中键值对数量】
===【for循环进行迭代(按顺序执行什么)】===
for 【变量名】 in 【可迭代对象】:【#对每个变量做一些事情#】
【执行语句】
range(5,10,1)【5是起始值,10是结束值(该值不包含在内),1是步长(1通常省略)】
for i in range(5,10):
print( i )【i会依次被赋值为从5到9的数字】
===【while循环】===
while 【条件A】:
【行动B】
list1 =["你",“好","吗","兄","弟"]
【for循环】
for char in list1:
print (char)
【for加range】
for i in range(len(list1)):
print(list1[i])
【while循环】
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对应year,1对应name】
message content ="""
律回春渐,新元肇启。
新岁甫至,福气东来。
金{year}贺岁,欢乐祥瑞。
金{year}敲门,五福临门。
给{name}及家人拜年啦!
新春快乐,{year}年大吉!
""".format( name=name,year=year )【name关键字=name参数值】
【f-字符串】【直接求值加入字符串】
message content =f"""
律回春渐,新元肇启。
新岁甫至,福气东来。
金{year}贺岁,欢乐祥瑞。
金{year}敲门,五福临门。
给{name}及家人拜年啦!
新春快乐,{year}年大吉!
"""
【指定浮点数在格式化时保留几位小数 :.2f 保留2位小数】
gpa_dict = {"小明":3.251,"小花":3.869,"小李":2.683,
"小张":3.685}
for name, gpa in gpa_dict.items():
print( "{0}你好,你的当前绩点为:{1: .2f } ".format(name,gpa))
===【定义函数def】===
def calculate_sector_1 ( )∶
#接下来是一些定义函数的代码
central_angle_1 = 160
radius_1 = 30
sector_area_1 = central_angle_1 / 360 *3.14*radius_1**2
print(f"此扇形面积为:{sector_area_1}")
【更通用的改进】
def calculate_sector( central_angle,radius ) :
sector_area = central_angle / 360* 3.14 *radius **2
print(f"此扇形面积为:{sector_area}")【def完了】
calculate_sector (160,30)【调用函数】
def func():
a=3
print(a)
return a【返回变量a的值,即整数3】
【return可以使结果用到变量赋值上】
===【引入模块】===
【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]))
===【面向对象编程】===
【# 定义ATM类】
class ATM:
def __init__( self,编号,银行,支行)∶
self.编号=编号
self.银行=银行
self.支行=支行
【#创建两个ATM对象】
atm1 = ATM("001","招商银行","南园支行")
atm2 = ATM("002","中国银行 ","北园支行")
【实例】
#1.属性包括学生姓名、学号,以及语数英三科的成绩
#2.能够设置学生某科目的成绩
#3.能够打印出该学生的所有科目成绩
class Student:
def __init__(self, name,student_id):
self.name = name
self.student_id = student_id
self.grades ={"语文":0,"数学":0,"英语":0}
def set_grade(self, course,grade):
if course in self.grades:
self.grades[course] = grade
def print_grades(self):
print(f"学生{self.name}(学号:{self.student_id})的成绩为:")
for course in self.grades:
print(f"{course}: {self.grades[course]}分")
===【继承】===
super().__init__()【调用父类的构造函数】
【open函数】
open( "/ usr/demo/data.txt", "r")
【r】读取模式(只读)【不写默认r】
【w】写入模式(只写)
【a】结尾补写
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())【# 会读全部的文件内容,并打印】
print(f.read())【#会读空字符串,并打印】
f = open( "./data.txt","r" , encoding="utf-8")
print(f.read(10))【#会读第1-10个字节的文件内容】
print(f.read(10))【#会读第11-20个字节的文件内容】
===【readline方法】===
f = open( "./data.txt","r", encoding="utf-8")
print(f.readline())【 #会读一行文件内容,并打印】
print(f.readline())【# 会读一行文件内容,并打印】
f = open( "./data.txt", "r",encoding="utf-8")
line = f.readline()【#读第一行】
while line != "":【#判断当前行是否为空】
print(line)【#不为空则打印当前行】
line = f.readline()【#读取下一行】
f = open( " ./ data.txt", "r", encoding="utf-8")
【# readlines会读全部文件内容,并把每行作为列表元素返回】
print(f.readlines())
f = open( " ./ data.txt","r", encoding="utf-8")
lines = f.readlines()【#把每行内容储存到列表里】
for line in lines:【#遍历每行内容】
print(line)【#打印当前行】
【实例1】
f = open(" ./data.txt","r",encoding="utf-8")
content = f.read()
print(content)
f.close()【#关闭文件释放资源】
【实例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("输入不为合理数字,请重新运行程序,并输入正确的数字。")
except ZeroDivisionError:
print("身高不能为零,请重新运行程序,并输入正确的数字。")
except:
print("发生了未知错误,请重新运行程序。")
else:
print("您的BMI值为:" + str(user__BMI))
finally:
print("程序结束运行。")【#finally一定会执行】
===【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]这个列表里。