Python学习笔记-风变编程
必学知识点:
HTML代码知识
爬虫四步:获取数据、解析数据、提取数据、存储数据对应的模块与应用
模拟登录,以及定时将爬虫结果发送邮箱
利用协程和scrapy框架优化爬虫效率和稳定性
常见应对反爬虫技巧
第一课:print()函数与变量
print()
print()函数的用法有以下几种:单枪匹马——不带引号、搭配单引号、搭配双引号、搭配三引号
变量
无引号:
print(520)、print(1+1)
匹配结果:520、2
注意点:纯数字、运算符
单引号、双引号:
print("Pythone学习")、print('Pythone学习')、print("Let's play pythone")
匹配结果:Pythone学习、Pythone学习、Let's play pythone
注意点:有'号出现时,用""将内容包含在其中
三引号:
print('''我愿意留在汤婆婆的澡堂里工作两年,第一年在锅炉房和锅炉爷爷一起烧锅炉水,将在这个世界变成一头猪。''')
组合示例:
import time
print ('在'+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+',我写了人生中第一行Python代码\n它的内容虽然简单,不过是平凡的一句print(520)\n但我知道:我的编程之路,将从最简单的520开始\n在我点击运行的同时,一切在这一刻起开始变得不同\n以下,是这行代码的运算结果:' )
易错点:
在Python中,默认所有正确的语法,包括标点符号都是【英文】。不小心用了中文标点的话,计算机会无法识别,然后报错。
在终端里,你能看到的最常见的符号报错提示就是【syntaxError:invalid syntax】(语法错误:无效语法)。
转义字符
print('我愿意留在汤婆婆的澡堂里工作两年,\n如果我违背工作内容的话,\n将在这个世界变成一头猪。')
同样可以实现以下效果:
print('''我愿意留在汤婆婆的澡堂里工作两年,第一年在锅炉房和锅炉爷爷一起烧锅炉水,将在这个世界变成一头猪。''')
\n 换行符
除了\n之外,转义字符还有很多,它们的特征就是:反斜杠+想要实现的转义功能首字母。
比如换行\n代表【+newline】;退格\b代表【+backspace】;回车\r代表【+return】。大家可以按照这种方法记住转义字符的含义。
常用的一些转义字符:
变量和赋值
name='千寻'
这就是一个常见的“给变量赋值”的动作。在这里,name就是一个变量,这行代码的意思,就是把“千寻”这两个字【赋值】给了“name”这个【变量】。
这就好比,为了让千寻在日后能在计算机中更方便地找到她的名字,我们帮她把名字收纳进了一个小盒子里,并在这个盒子上贴了个叫“name”的标签。
回想一下,我们平时在收拾东西的时候,是不是会把散落各处东西放进不同的盒子里,并且做好标记?这样的“收纳”动作,能够让空间变得整齐,也更方便我们自己取用东西。
这个“盒子”在Python中被称为变量,你可以在这个“盒子”里放任何你想放的内容。而这个往盒子里装东西的过程,在代码的魔法世界被称为【赋值】。
变量的命名规范
第一课小结:
第二课:数据类型与转换
数据类型
在现实世界的镜像——Python里,最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)。
字符串
字符串英文string,简写str。字符串,顾名思义,就是由一个个字符串起来的组合,字符可以是一个数字、一个字母、一个文字,甚至是一个符号。字符串可以表达现实世界里的词、语句、表达式等
字符串的识别方式非常简单——有层名为【引号】的皮,只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型。
字符串类型必须有【引号】的辅助。不然字符串就只能被报错,无尽地呻吟~
例如:
name='千寻'
Chinese = '镜像世界'
English = "mirror world"
number = "666"
symbol = '''科A!@'''
mixture = '镜像世界mirror world666科A!@'
整数
整数英文为integer,简写做int。Python世界的整数其实和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字。
例如:
a = 10
b = -60
c = 6841
d = 0
注意点:
''108''被引号包围,所以''108''是字符串不是整数。
整数其实是一个不带小数点的数字,可以不穿名为引号的马甲,直接跟print()函数组团搞输出。整数脱掉了【引号】马甲,只能『单独行动』。一旦碰上符号及其他文字类数据,譬如中文、英文,立马被报错秒杀。
打印整数
print(666)
# 打印结果
666
浮点数
浮点数非常好识别,它比整数多了一个小数点『.』。浮点数的英文名是float,与整数(int)和字符串(str)不同,浮点数没有简写。
例如:
1.0
3.14159
-0.33
注意点:
计算机里浮点数的运算是不精确的,会有四舍五入的误差。Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,而在这个转化过程中存在误差,就造成了我们与程序计算结果的差异。
例:
print(0.55+0.3)
#打印结果
0.8500000000000001
数据的应用
四则运算
Python里的整数、浮点数和数学意义的整数、小数是一样的,它最重要的作用是与运算符号结合,进行数学计算。接下来我们看一下Python如何利用整数,浮点数进行四则运算。
Python世界的运算符
运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的。
字符串的拼接
字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。
例如:
hero = '我'
organization = '风变编程'
identity = '学员'
action = '是'
ID = '007'
print(hero+action+organization+identity+ID)
print(organization+identity+ID+action+hero)
打印结果
我是风变编程学员007
风变编程学员007是我
注意点:不同类型的数据不能拼接在一起
数据类型的查询——type()函数
这个type()函数要怎么使用呢?只要你把内容写在括号里,type()函数就会立即将它的类型查询出来。
例子:
who = '我的'
action = '是'
destination = '镜像世界'
number = 153
code = '通行密码'
print(type(who))
print(type(destination))
print(type(code))
print(type(action))
print(type(number))
数据转换
负责转换数据类型的函数一共有3种:str()、 int()和float()。
str()函数
str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能摇身一变,成为字符串类型。
知识点:str()函数和引号,可以输出了同一种结果。
例:
unit = '天'
place2 = '现实世界的'
action = '等于'
number1 = 1
number2 = 666
print(place1+str(number1)+unit+action+place2+str(number2)+unit)
print(place1+'1'+unit+action+place2+'666'+unit)
打印结果
镜像世界的1天等于现实世界的666天
镜像世界的1天等于现实世界的666天
int()函数
使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)。
注意点:
- 只有符合整数规范的字符串类数据,才能被int()强制转换。文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换。
- 小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。
float()函数
将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。
第二课小结:
第三课:条件判断与条件嵌套
条件判断
单向判断:if 如果……就
被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。
双向判断:if…else…
如果不满足条件时,我们要怎么办。Python则很贴心地,让我们借用if…else…语句,让码农们有了另一种选择——【如果…不满足,就…】
例子:
weight=101
if weight>100:
print('不吃了')
else:
print('放心吃吧')
多向判断:if…elif…else…
这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。
例子:
stonenumber=0
if stonenumber>=6:
print('你拥有了毁灭宇宙的力量')
elif 0<stonenumber<=5:
print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')
else:
print('需要惊奇队长逆转未来')
知识点:
if嵌套
if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。
例子:
historyscore=26
if historyscore>=60:
print('你已经及格')
if historyscore>=80:
print('你很优秀')
else:
print('你只是一般般')
else:
print('不及格')
if historyscore<30:
print('学渣')
else:
print('还能抢救一下')
print('程序结束')
if嵌套的执行顺序
总共分为四部分【赋值、if、else、print()】,两个大代码组。
第三节课小结:
第四课:input()函数
人类用键盘向电脑提供指令,再通过电脑把问题显示在显示器上,等人回答的过程,就是通过input()函数实现的。
示例:
import time
print('亲爱的同学:')
time.sleep(1)
print('我们愉快地通知您,您已获准在霍格沃茨魔法学校就读。')
time.sleep(2)
print('随信附上所需书籍及装备一览。')
time.sleep(1)
print('学期定于九月一日开始。')
time.sleep(1)
print('鉴于您对魔法世界的不熟悉,')
time.sleep(1)
print('我们将指派魔咒学老师——吴枫教授带您购买学习用品。')
time.sleep(2)
print('我们将于七月三十一日前静候您的猫头鹰带来的回信。')
time.sleep(1)
print('那么,您的选择是什么? 1 接受,还是 2 放弃呢?')
time.sleep(2)
choice=input('请输入您选择的数字:')
if choice =='1':
print('霍格沃茨欢迎您的到来。')
else:
print('您可是被梅林选中的孩子,我们不接受这个选项。')
input()函数的使用
当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答。
例子:
input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')
input()函数结果的赋值
我们可以对变量进行赋值,这样当我们想提取数据时,只要直接打印变量名,就能唤醒程序对数据的记忆。
我们需要对input()函数的结果进行赋值,然后使用input()函数搜集信息,最后再用print()函数输出结果。
例子:
magic = input('请在以下选项【厄里斯魔镜;时间转换器;飞天扫帚;隐形斗篷】中,选择出你最想拥有的魔法物品:')
print(magic + '是我最想拥有的魔法!')
input()函数的数据类型
对于input()函数来说,不管我们输入的回答是什么,不管你输入的是整数1234,还是字符串『隐形斗篷是我最想拥有的魔法』,input()函数的输入值(搜集到的回答),永远会被【强制性】地转换为【字符串】类型。(Python3固定规则)
input()函数结果的强制转换
我们什么时候会用到,input()函数结果的强制转换呢?
当你想要的答案是数字时,比如年龄:
age = int(input('猜一猜巫师的『法定成年年龄』是几岁,请输入:'))
if age > 17:
print('哈哈,居然比这个年龄还要小呢!')
elif age == 17:
print('正确!我猜你是个巫师啦~')
else:
print('呜呜,这个年龄~我还是个宝宝呢,正确答案是17岁哦')
再比如需要输入的信息是时间,或者工资等数字时:
money = int(input('你一个月工资多少钱?'))
if money >= 10000:
print('土豪我们做朋友吧!')
elif 5000<money<1000:
print('我们都是搬砖族。。。')
else:
print('我负责赚钱养家,你负责貌美如花~')
重要知识点:想要整数,源头转换输入值需要整数时,input()函数结果需要强制转换。
第四课小结:
第五课:列表和字典
总的来说,计算机有3种方式利用数据: