爆肝六万字整理的python基础,快速入门python的首选
时间:2022-08-11 05:30:00
文章目录
- 1 环境安装
- 2 Python的第一程序Hello World
- 3 变量定义和类型
-
- 3.1 变量是什么?
- 3.2 变量的类型
- 3.3 变量命名规则
- 3.4 常用的数据类型转换
- 4 注释
-
- 4.1 单行注释
- 4.2 多行注释
- 4.3 编码
- 5 输入输出
-
- 5.1 输入
- 5.2 输出
- 5.2.1 格式化输出
-
- 5.2.2换行输出
- 6 运算符
- 7 判断语句
-
- 7.1 if语句
- 7.2 if-else语句
- 7.3 elif
- 7.4 if嵌套
- 8 循环、break和continue
-
- 8.1 while循环
- 8.2 while循环嵌套
- 8.3 for循环
- 8.5 break
- 8.6 continue
- 9 字符串、列表、元组、字典
-
- 9.1 字符串
- 9.2 常见的字符串操作
-
-
- 9.2.1 find
- 9.2.2 index
- 9.2.3 count
- 9.2.4 replace
- 9.2.5 split
- 9.2.6 capitalize
- 9.2.7 title
- 9.2.8 startswith
- 9.2.9 endswith
- 9.2.10 lower
- 9.2.11 upper
- 9.2.12 ljust
- 9.2.13 rjust
- 9.2.14 center
- 9.2.15 lstrip
- 9.2.16 rstrip
- 9.2.17 strip
- 9.2.18 rfind
- 9.2.19 rindex
- 9.2.20 partition
- 9.2.21 rpartition
- 9.2.22 splitlines
- 9.2.23 isalpha
- 9.2.24 isdigit
- 9.2.25 isalnum
- 9.2.26 isspace
- 9.2.27 join
- 9.3 列表List
-
- 9.3.1 for循环遍历list
- 9.3.2 while循环遍历list
- 9.4 列表的常用操作
-
- 9.4.1 添加元素("增"append, extend, insert)
- 9.4.2修改元素("改")
- 9.4.3 查找元素("查"in, not in, index, count)
- 9.4.4 删除元素("删"del, pop, remove)
- 9.4.5 排序(sort, reverse)
- 9.4.6 列表的嵌套
- 9.5 元组
-
- 9.5.1 访问元组
- 9.5.2 修改元组
- 9.5.3 元组内置函数count, index
- 9.6 字典
-
- 9.6.1 按键访问值
- 9.7 常用的字典操作
-
- 9.7.1 修改元素
- 9.7.2 添加元素
- 9.7.3 删除元素
- 9.7.4 字典的长度
- 9.7.5 找出字典中的一切key
- 9.7.6 找出字典的一切value
- 9.7.7 找出字典(键,值)
- 9.7.8 判断key是否存在
- 9.7.9 多种方式遍历字典
-
- 10 函数
-
- 10.1 定义函数
- 10.2 调用函数
- 10.3 函数的注释
- 10.4 函数的参数
-
- 10.4.1 参数的定义
- 10.4.2 参数的分类
- 10.4.3 参数的传递
- 10.5 函数的返回值
- 10.6 局部变量和全局变量
- 10.7 递归函数
- 10.8 匿名函数
-
- 10.8.1 定义
- 10.8.2 应用场合
- 11 文件操作
-
- 11.1 打开与关闭
-
- 11.1.1 打开文件
- 11.1.2 关闭文件
- 11.2 文件的读写
-
- 11.2.1 写数据(write)
- 11.2.2 读数据(read)
- 11.2.3 读数据(readlines)
- 11.2.4 读数据(readline)
- 11.3 常用的文件操作
-
- 11.3.1 获取当前读写位置
- 11.3.2 定位到某个位置
- 11.3.3 文件重命名
- 11.3.4 删除文件
- 11.4 相关操作文件夹
-
- 11.4.1 创建文件夹
- 11.4.2 获取当前目录
- 11.4.3 改变默认目录
- 11.4.4 获取目录列表
- 11.4.5 删除文件夹
- 11.4.6 检查文件夹是否存在
- 11.4.7 创建多级文件夹
- 12 面向对象编程
-
- 12.1 类和对象
-
- 12.1.1 类
- 12.2.2 对象
- 12.2.3 类和对象关系
- 12.2.4 定义类
- 12.2.5 创建对象
- 12.2.6 `__init__()`方法
- 12.2.7 魔法方法
- 12.2.8 self
- 12.2 属性
-
- 12.2.1 类属性
- 12.2.2 实例属性(对象属性)
- 12.2.3 私有属性
- 12.3 继承
-
- 12.3.1 私有属性和方法的继承
- 12.3.2 多继承
- 12.3.3 重写父类方法
- 12.3.4 调用父类的方法
- 12.4 多态
- 12.5 静态方法和类方法
-
- 12.5.1 类方法
- 12.5.2 静态方法
- 13 异常
-
- 13.1 捕获异常
-
- 13.1.1 捕获异常 try...except...
- 13.1.2 except捕获多个异常
- 13.1.3 获取异常的信息描述
- 13.1.4捕获所有异常
- 13.1.5 else
- 13.1.6 try...finally...
- 13.2 异常的传递
-
- 13.2.1. try嵌套中
- 13.2.2 函数嵌套调用中
- 13.3 抛出自定义的异常
- 13.4 异常处理中抛出异常
- 14 模块
-
- 14.1 模块介绍
-
- 14.1.1 Python中的模块
- 14.1.2 import
- 14.1.3 from…import
- 14.1.4 from … import *
- 14.1.5 as
- 14.1.6 定位模块
- 14.2 制作模块
-
- 14.2.1 定义自己的模块
- 14.2.2 调用自己定义的模块
- 14.2.3 测试模块
- 14.3 模块中的`__all__`
-
- 14.3.1 没有`__all__`
- 14.3.2. 模块中有`__all__`
- 14.4 python中的包
-
- 14.4.1. 引入包
- 14.4.2 `__init__.py`文件作用
- 14.5 模块发布
- 14.6 模块安装、使用
-
- 14.6.1 安装的方式
- 14.6.2 模块的引入
1 环境安装
学习python开发,首先要学会安装Python环境,我一般使用Anaconda+Pycharm作为开发环境。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果觉得安装包太大可以使用Miniconda。
关于环境的安装我已经写了多篇文章,比如:
Ubuntu20.04的开发环境搭建:(4条消息) Ubuntu 20.04安装 Anaconda和Pycharm_AI浩-CSDN博客
Win10的开发环境搭建:(4条消息) Win10 安装Anaconda、Pycharm、Tensorflow和Pytorch_AI浩-CSDN博客
Anaconda的历史版本下载:(4条消息) Anaconda历史版本_AI浩-CSDN博客,如果不想使用最新的版本,可以找到以前的版本。
2 Python的第一程序Hello World
新建个工程,将其命名为“Python基础”,然后点击“Create”
然后,右击工程,选择“New”,然后选择“Python File”。
将其命名为“第一个Python程序”,然后按“Enter”键
到这里我们创建Python文件的工作就完成成了,下面试试Hello World。
将下面的代码,复制进去:
print('hello world')
然后右键选择Run,或者使用快捷键“Ctrl+Shift+F10"。
运行结果:
喜欢敲命令的朋友可以选择命令行运行:
python 第一个Python程序.py
3 变量定义和类型
3.1 什么是变量。
打个比方:我最近买了两本书,一本售价89,一本售价118,我想用python计算一下两本书一共要多少钱:
num1 = 89
num2 = 118
num3 = num1 + num2
print(num3)
运行结果:207
所谓的变量就是对计算机存储值的表示,从上面的例子,我们可以得出:
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
3.2 变量的类型
如何知道一个变量的类型呢?
在python中,只要定义了一个变量,而且它有数据,那么它的类型就已经确定了,不需要咱们开发者主动的去说明它的类型,系统会自动辨别
可以使用type(变量的名字),来查看变量的类型,例如:
num1 = 89
num2 = 118
num3 = num1 + num2
print(type(num3))
运行结果:
3.3 变量的命名规则
变量的命名规则:
-
由字母、下划线和数字组成,且数字不能开头。
-
不能使用python的关键字。
关键字有:
and as assert break class continue def del
elif else except exec finally for from global
if in import is lambda not or pass
print raise return try while with yield
-
起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可 读性) 比如: 名字 就定义为 name ,年龄用age。
-
驼峰命名法
第一种 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
第二种 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
第三种 用下划线“_”来连接所有的单词,比如send_buf,这是python主推的命名方法,叫做snake-case。
注:python中的标识符是区分大小写的
3.4 常用的数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
举例
a = '100' # 此时a的类型是一个字符串,里面存放了100这3个字符
b = int(a) # 此时b的类型是整型,里面存放的是数字100
print("a=%d"%b)
4 注释
4.1 单行注释
以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用
# 我是注释,可以在里写一些功能说明之类的哦
print('hello world')
4.2 多行注释
'''我是多行注释,可以写很多很多行的 哈哈哈。。。 哈哈哈。。。 '''
''' 我是多行注释,可以写很多很多行的 哈哈哈。。。 哈哈哈。。。 '''
print('hello world')
4.3 编码
如果直接在程序中用到了中文,比如
print('你好,我是AI浩')
如果直接运行输出,程序会出现编码的问题(这和平台有关)
解决的办法为:在程序的开头写入如下代码,这就是中文注释
#coding=utf-8
修改之后的程序:
#coding=utf-8
print('你好,我是AI浩')
运行结果:
你好
注意:在python的语法规范中推荐使用的方式:
# -*- coding:utf-8 -*-
5 输入输出
5.1 输入
input()接受表达式输入,并把表达式的结果赋值给等号左边的变量
a = input("请输入数字:")
print(a)
print(type(a))
b=input("请输入字符串:")
print(b)
print(type(b))
c= input("请输入数学表达式:")
print(c)
print(type(c))
d= input("请输入字符串表达式:")
print(d)
print(type(d))
运行结果:
请输入数字:123
123
<class 'str'>
请输入字符串:abc
abc
<class 'str'>
请输入数学表达式:123+456
123+456
<class 'str'>
请输入字符串表达式:sdsf,1223
sdsf,1223
<class 'str'>
5.2 输出
print() 将python的输入
# 打印提示
print('hello world')
5.2.1 格式化输出
如下代码:
age = 100
print("我今年%d岁"%age)
age += 1
print("我今年%d岁"%age)
age += 1
print("我今年%d岁"%age)
运行结果:
我今年100岁
我今年101岁
我今年102岁
在程序中,看到了%
这样的操作符,这就是Python中格式化输出。
age = 18
name = "lifeifei"
print("我的姓名是%s,年龄是%d"%(name,age))
常用的格式符号
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 通过str() 字符串转换来格式化 |
%i | 有符号十进制整数 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母) |
%X | 十六进制整数(大写字母) |
%e | 索引符号(小写’e’) |
%E | 索引符号(大写“E”) |
%f | 浮点实数 |
%g | %f和%e 的简写 |
%G | %f和%E的简写 |
在python3.6版本中新增了f-string格式化方式,称之为字面量格式化字符串,是新的格式化字符串的语法。
例:
name = 'AI浩'
print(f'Hello {
name}') # 替换变量
运行结果:
Hello AI浩
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
dicPeople= {
'name': 'AIHao', 'Age': 111}
print(f'{
dicPeople["name"]}: {
dicPeople["Age"]}')
运行结果:
AIHao: 111
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
x=10
print(f"{
x+10=}")
运行结果:
x+10=20
5.2.2换行输出
在输出的时候,如果有\n
那么,此时\n
后的内容会在另外一行显示
print("1234567890-------") # 会在一行显示
print("1234567890\n-------") # 一行显示1234567890,另外一行显示-------
运行结果:
1234567890-------
1234567890
-------
6 运算符
python支持以下几种运算符
- 算术运算符
下面以a=10 ,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | x除以y b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 幂 | 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 |
>>> 9/2.0
4.5
>>> 9//2.0
4.0
- 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7 |
>>> a, b = 1, 2
>>> a
1
>>> b
2
- 复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
- 比较(即关系)运算符
python中的比较运算符如下表
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果是则条件变为真。 | 如a=3,b=3则(a == b) 为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | 如a=1,b=3则(a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a > b) 为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | 如a=7,b=3则(a < b) 为 false. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a >= b) 为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | 如a=3,b=3则(a <= b) 为 true. |
- 逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
7 判断语句
7.1 if语句
- if语句是用来进行判断的,其使用格式如下:
if 要判断的条件:
条件成立时,要做的事情
例1:
age = 30
print("------if判断开始------")
if age >= 18:
print ("我已经成年了,我可以约妹子了!!!")
print ("------if判断结束------")
运行结果:
------if判断开始------
我已经成年了,我可以约妹子了!!!
------if判断结束------
例2:
age = 16
print("------if判断开始------")
if age >= 18:
print ("我已经成年了,我可以约妹子了!!!")
print ("------if判断结束------")
运行结果:
------if判断开始------
------if判断结束------
**总结:**以上2个例子仅仅是age变量的值不一样,结果却不同;能够看得出if判断语句的作用:就是当满足一定条件时才会执行那块代码,否则就不执行那块代码
7.2 if-else语句
if 条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
......
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
......
例:
age = 30
print("------if判断开始------")
if age >= 18:
print ("我已经成年了,我可以约妹子了!!!")
else:
print("还没有成年,不能约妹子!!!")
print ("------if判断结束------")
结果1:年龄大于18
------if判断开始------
我已经成年了,我可以约妹子了!!!
------if判断结束------
结果2:年龄小于18
------if判断开始------
还没有成年,不能约妹子!!!
------if判断结束------
7.3 elif
elif的使用格式如下:
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
说明:
- 当xxx1满足时,执行事情1,然后整个if结束
- 当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
- 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
例:
score = 66
if 90 <= score <= 100:
print('本次考试,等级为A')
elif 80 <= score < 90:
print('本次考试,等级为B')
elif 70 <= score < 80:
print('本次考试,等级为C')
elif 60 <= score < 70:
print('本次考试,等级为D')
elif 0 <= score < 60:
print('本次考试,等级为E')
可以和else一起使用
if 性别为男性:
输出男性的特征
...
elif 性别为女性:
输出女性的特征
...
else:
第三种性别的特征
...
说明:
-
当 “性别为男性” 满足时,执行 “输出男性的特征”的相关代码
-
当 “性别为男性” 不满足时,如果 “性别为女性”满足,则执行 “输出女性的特征”的相关代码
-
当 “性别为男性” 不满足,“性别为女性”也不满足,那么久默认执行else后面的代码,即 “第三种性别的特征”相关代码
-
elif必须和if一起使用,否则出错
7.4 if嵌套
if嵌套的格式
if 条件1:
满足条件1 做的事情1
满足条件1 做的事情2
......
if 条件2:
满足条件2 做的事情1
满足条件2 做的事情2
......
- 说明
- 外层的if判断,也可以是if-else
- 内层的if判断,也可以是if-else
- 根据实际开发的情况,进行选择
if嵌套的应用举例:
age = 16
girl = False
if age >= 18:
print("我已经成年了,我可以约妹子了!!!")
if girl:
print("有女朋友,去约会!!")
else:
print("没有女朋友,约个屁啊!!")
else:
print("还没有成年,不能约妹子!!!")
if girl:
print("还没有成年,这是早恋啊!!")
else:
print("听话的好孩子!!!")
结果1:age= 30;girl= True
我已经成年了,我可以约妹子了!!!
有女朋友,去约会!!
结果2:age= 30;girl= False
我已经成年了,我可以约妹子了!!!
没有女朋友,约个屁啊!!
结果3:age= 16;girl= False
还没有成年,不能约妹子!!!
听话的好孩子!!!
结果4:age= 16;girl= True
还没有成年,不能约妹子!!!
还没有成年,这是早恋啊!!
8 循环、break和continue
8.1 while循环
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
例:
i = 0
while i < 5:
print("当前是第%d次执行循环" % (i + 1))
print("i=%d" % i)
i += 1
结果:
当前是第1次执行循环
i=0
当前是第2次执行循环
i=1
当前是第3次执行循环
i=2
当前是第4次执行循环
i=3
当前是第5次执行循环
i=4
案例1. 计算1~100的累积和(包含1和100)
参考代码如下:
# encoding=utf-8
i = 1
sum = 0
while i <= 100:
sum = sum + i
i += 1
print("1~100的累积和为:%d" % sum)
运行结果:1~100的累积和为:5050
案例2. 计算1~100之间偶数的累积和(包含1和100)
# encoding=utf-8
i = 1
sum = 0
while i <= 100:
if i % 2 == 0:
sum = sum + i
i += 1
print("1~100的偶数累积和为:%d" % sum)
运行结果:1~100的偶数累积和为:2550
8.2 while循环嵌套
类似if的嵌套,while嵌套就是:while里面还有while
格式如下
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
......
while 条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
...(省略)...
案例1 要求:打印如下图形:
*
* *
* * *
* * * *
* * * * *
参考代码:
i = 1
while i<=5:
j = 1