-
CSDN平台内的python入门博客(有很多写得通俗易懂而系统便于学习的博客教程,可多看看选择最适合自己的)
多行注释:以’’‘开始,并以’’'结束
运行结果
变量没有类型,数据才有类型
命名规则:
- 标识符由字母、下划线和数字组成,且数字不能开头。
- 严格区分大小写。
- 不能使用关键字。(pycharm中蓝色高亮部分)
驼峰命名法:
- 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName.
运行结果:
换行输出
结果输出:
边框简化写法(效果与上同):
输出结果:
关于布尔值
以上情况为假,其余为真
示例
结果
示例:
结果:
输出结果:
示例2
当布尔参与运算时, False转0 True转1输出结果:
示例3
输出结果
- and(并) 均满足时,结果才是True
- or(或) 只要有一个满足,结果为True
- not(取反)
逻辑运算符返回结果不一定是bool类型
短路运算:从左往右运算
and 左边开始,只要是真,继续往后走。若遇假,立即停止,后面不管
or 左边开始,只要是假,继续往右走。若遇真,立即停止,后面不管
分析:
游戏双方 电脑*用户 两者随机出下面三种中的一个
剪刀0 石头1 布2
用户赢得情况(左侧) 0-2 1-0 2-1(也就是说如果电脑出2,用户出0即赢得游戏)代码实现
while语法:
这里也可以使用range,注意range左闭右开
1.生成矩形
最终效果:
2.倒置的九九乘法表
最终效果:
3.寻找水仙花数
最终结果:
4.折叠次数的求解
一张纸的厚度是0.08mm,请问折叠几次达高度 8848.13m最终结果:
4.百马马百担问题
输出结果:
语句:
for 临时变量 in 可迭代对象:
满足条件时执行的代码可迭代对象:
字符串、列表、字典、元组、集合
‘’’切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束]
列表的切片操作与字符串类似
- 获取长度:len
- 查找内容:find,index,rfind,rindex
find——查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1- 判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
- 计算出现次数:count
- 替换内容:replace
- 切割字符串:split,rsplit,splitlines,partition,rpartition
- 修改大小写:capitalize,title,upper,lower
- 空格处理:ljust,rjust,center,lstrip,rstrip,strip
- 字符串拼接:join
注意:在Python中,字符串是不可变的!所有的字符串相关方法,都不会改变原有的字符串,都是返回一个结果,在这个新的返回值里,保留了执行后的结果!
增
删
列表元素的常用删除方法有:
- del:根据下标进行删除
- pop:删除最后一个元素
- remove:根据元素的值进行删除
改
查
- in 和 not in (存不存在)
- index(查找位置,无则报错) 和 count(对元素出现的次数计数)
遍历循环
使用while:
使用for:
嵌套操作
列表生成式
两种列表元素去重的方法
元组是不可变类型,跟字符串一样,原来结果永不变。所以该数据类型非常适用于固定数据或想避免改变原数据的情况。
python可变类型:列表 字典 集合
不可变类型:整型 字符串 元组 bool元组的不可变性
- 字典的键必须是不可变类型(一般为字符串),而value可以是任意类型
- 字典的键不要重复,否则后边的会把前面的覆盖掉
结果:
字典的遍历
遍历键:(遍历值的操作与之类似)
遍历字典的键值对(.items):
enumerate()
该函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合。
并、添、移、删
集合运算:
函数是对语句的封装(类似于ppt中的模板,当我们想达成某一效果时,只需选用相应的模板填入内容即可。)
定义:
函数写好后,需要调用才能实现功能
函数返回值
函数调用函数
求n的阶乘
求m阶乘的和
返回多个值的情况
可变参数
可变位置参数
关键字参数以字典形式保存,且永远放在参数列表的末尾
为更好理解,我们先来看如下例子:
用lambda关键词能创建小型匿名函数。(这种函数得名于省略了用def声明函数的标准步骤) 从而可以实现与上面相同的功能。
lambda 参数列表: 运算表达式
匿名函数的应用:
1 按年龄排序
2 寻找大于18的年龄
3 统一涨薪
- 面向过程:根据业务逻辑从上到下写代码。
- 面向对象:将变量与函数绑定到一起,分类进行封装,每个程序只要负责分配给自己的分类,这样能够更快速的开发程序,减少了重复代码。
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑,面向过程基本是由函数组成的。
01.面向过程编程
面向过程编程的关注点在于怎么做
- 把完成某一个需求的 所有步骤 从头到尾 逐步实现
- 根据开发需求,将某些 功能独立 的代码 封装 成一个又一个 函数
- 最后完成的代码,就是顺序地调用 不同的函数
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)和面相对象,是两种不同的编程方式。
面向对象编程的关注点在于谁来做
相比较函数,面向对象是更大的封装,根据职责在 一个对象中封装多个方法
- 在完成某一个需求前,首先确定职责 —— 要做的事情(方法)
- 根据 职责 确定不同的 对象,在对象内部封装不同的方法(多个)
- 最后完成的代码,就是顺序地调用不同对象的相应方法。
特点:
- 注重 对象和职责,不同的对象承担不同的职责。
- 更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路。
- 需要在面向过程基础上,再学习一些面向对象的语法。
类:
对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
- 特征其实就是一个变量,在类里我们称之为属性。
- 行为其实就是一个函数,在类里我们称之为方法。
- 类其实就是由 属性 和 方法 组成的一个抽象概念。
对象:
对象是由类创建出来的一个具体存在,可以直接使用。由哪一个类创建出来的 对象,就拥有在哪一个类中定义的属性和方法。
对象就相当于用图纸制造的飞机。在开发中,应该先有类,在类里定义好属性和行为,再根据类来创建对象。
类和对象的关系
- 类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。
- 使用同一个类,能够创建出很多对象。
- 类中定义了什么属性和方法,对象中就有什么属性和方法。
- 不同对象对应的属性值也会不同。
Python 里有一种方法,叫做魔法方法。Python 的类里提供的,两个下划线开始,两个下划线结束的方法,就是魔法方法,魔法方法在恰当的时候就会被激活,自动执行。 魔法方法的两个特点:
- 两侧各有两个下划线;
- "咒语"名字已经由 Python 官方定义好,我们不能乱写。
方法二(pip):
先打开Terminal(pycharm左下),通过以下命令可完成相应需求
1 使用pip list查看已下载包
2 pip install '包名’
这种方法很直接,但直接在官网下载经常会因各种原因卡顿、甚至下载失败。此时,我们可以去国内镜像网站下载相应包。国内常用的pip下载源列表:
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣(douban) http://pypi.douban.com/simple/
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
3 pip install 包名 -i 国内源地址
实用操作
为了方便程序员开发代码,Python提供了很多内置的模块给程序员用来提高编码效率。常见的内置模块有:
- os模块: OS全称OperationSystem,即操作系统模块,这个模块可以用来操作系统的功能,并且实现跨平台操作。
- sys模块
- math模块
- random模块
- datetime模块
- time模块: datetime模块主要用来显示日期时间,这里主要涉及 date类,用来显示日期;time类,用来显示时间;dateteime类,用来显示日期时间;timedelta类用来计算时间。
- calendar模块
- hashlib模块: 一个提供字符加密功能的模块,包含MD5和SHA的加密算法,具体支持md5,sha1, sha224, sha256, sha384, sha512等算法。 该模块在用户登录认证方面应用广泛,对文本加密也很常见。
- hmac模块: HMAC算法也是一种一种单项加密算法,并且它是基于上面各种哈希算法/散列算法的,只是它可以在运算过程中使用一个密钥来增增强安全性。hmac模块实现了HAMC算法,提供了相应的函数和方法,且与hashlib提供的api基本一致。
- copy模块
- uuid模块: UUID是128位的全局唯一标识符,通常由32字节的字母串表示,它可以保证时间和空间的唯一性,也称为GUID。通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生产的ID的唯一性。随机生成字符串,可以当成token使用,当成用户账号使用,当成订单号使用。
文件的路径分为相对路径和绝对路径两种。
绝对路径:指的是绝对位置,完整地描述了目标的所在地,所有目录层级关系是一目了然的。
相对路径:是从当前文件所在的文件夹开始的路径。
- test.txt,是在当前文件夹查找 test.txt 文件
- https://blog.csdn.net/qq_45060674/article/details/test.txt,也是在当前文件夹里查找test.txt文件, https://blog.csdn.net/qq_45060674/article/details/ 表示的是当前文件夹。
- …/test.txt,从当前文件夹的上一级文件夹里查找 test.txt 文件。 …/ 表示的是上一级文件夹
- demo/test.txt,在当前文件夹里查找 demo这个文件夹,并在这个文件夹里查找 test.txt文件。
1 文件的输入
使用write命令一定要记得close掉。使用’with open’更便捷,无需在末尾手动close。
2 文件的读取
读
使用csv.DictWriter返回字典
写
通过文件操作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。
设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。
Python中提供了JSON和pickle两个模块用来实现数据的序列化和反序列化。
Json模块(JSON的本质是字符串!)
补充:利用json选出所需网页数据:
正则表达式是一个特殊的字符序列,计算机科学的一个概念。通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用re模块。re 模块使 Python 语言拥有全部的正则表达式功能。