Python从入门到进阶的笔记全解析
本篇用于记录学习的python知识,便于以后速查,不定期更新(●'◡'●)
先说好,这个不是给新手看的保姆级教程
=====================================================================
第一章 哈喽派森
1,python环境的安装
这里windows为例,苹果和linux见视频第一阶段-第一章-04-【拓展】-Python环境安装(MacOS)_哔哩哔哩_bilibili
官网下载: Welcome to Python.org
安装要点:(部分简单步骤省略)
验证安装是否成功:
cmd输入命令:python,能看到版本就是成功
2,hello world
print("Hello world!!!")
↑引号和括号是英文
2.5,可能出现的问题
1
2
3
3,解释器简介
进入解释器环境:
python
退出解释器:
exit()
点py文件↓
4,PyCharm开发工具的安装
下载地址:JetBrains: Essential tools for software developers and teamshttps://www.jetbrains.com/
下社区版,不要钱
记得改一下安装路径
打开后,接受协议,不发送
新建工程
记得勾选一下那个 口creat a welcome script,不然没有main.py文件,格式会不一样
新建之后可能会弹窗问你下不下载,选择always下载
新建文件
右键工程>new>python file>>命名>回车
运行
1,右键>run
2,顶部菜单栏直接按小三角
5,Pycharm的基础使用
修改主题颜色:
千万别看都不看点错了,不小心把菜单栏点没了你就偷着乐去吧
修改字体
修改字体快捷键设置
设置搜increase
这个是增大字体,缩小就搜decrease
插件安装
在这里搜你需要的插件,汉化搜chinses,翻译搜translation,
搜不到的去这搜,PyCharm官方Marketplace链接:JetBrains Marketplace
这里给出汉化直达链接
Chinese (Simplified) Language Pack / 中文语言包 Plugin for JetBrains IDEs | JetBrains Marketplace
如果你当前已经打开pycharm,他会直接匹配你的版本,没打开就自己找对应的版本,然后install就欧克了
常用快捷键★★★
第二章 python基础
1,字面量
含义:代码中,被写下来的固定的值
派森中,字符串需要用引号包围起来,被引号包围起来的都是字符串
print(666)
print(13.14)
print("你好")
2,注释
注释的作用:注释是代码中的解释型语句,用来对代码内容进行注解
注释不是代码,不会被程序执行
单行注释,一般用于解释 单行代码或一小段代码
# 我是单行注释,代码规范一般建议井号后面一个空格
print()
多行注释,一般用于解释-整个python代码文件,类,方法,一般写在开头
"""
我是多行注释
可以换行
多行注释一般用于解释-整个python代码文件,类,方法
"""
print("111")
3,变量
定义:在程序运行时,能储存计算结果或能表示值得抽象概念
简单来说就是程序运行时,记录数据用得
格式:
# 定义一个变量,用来记录钱包余额
money = 50
#输出变量
print("钱包还有:",money)
# 买了一个冰激凌,花费10元
money = moner - 10
print("买了一个冰激凌,钱包还有:",money)
特征:变量得值可以改变
★★print语句输出多个内容中间用(英文)逗号隔开
4,数据类型
入门常用:
# 查看类型信息
type()
也可以查看变量中存储得数据类型
★★在派森中,变量是没有类型的
所以type(变量)查看的也是变量中存储得数据类型
5,数据类型转换
用途:
★★这三个语句都是带有返回值的,可以直接输出也可以用变量接
★★万物皆可转字符串,反之不行,整数转浮点数会加小数部分,反之会丢失精度(丢失小数部分)
6,标识符
定义:是用户在编程的时候所使用的一系列的名字,用于给变量、类、方法等命名
规则:
- 内容限定:只允许出现,英文,中文(不推荐),数字(不可以用在开头 ),下划线,这四种元素
- 大小写敏感:能区分大小写
- 不可使用关键字:
命名规范:
- 变量名:见名知意(明了,简洁),下划线命名法(多个单词用下划线隔开),英文字母全小写
- 类名:
- 方法名:
7,运算符
算数(数学)运算符:
赋值运算符:
复合赋值运算符:
8,字符串扩展
字符串的三种定义方式
1,单引号定义法:name = ' 你好 '
2,双引号定义法:name = "你好"
3,三引号定义法:name = """你好"""
★★三引号定义法的写法和多行注释一样,同样支持换行,用变量接收就是字符串,不接就可以作为多行注释使用
★★怎么定义引号自身:
name = "\"你好\"\'"
字符串拼接
用加号+拼接 ,一般用于字面量与变量之间,或者变量与变量之间
name = "张三"
age = "11"
print("你好," + "我的名字叫"+ name + ",我今年" + age + "岁。")
但是字符串不能直接拼接 整数或浮点数
# 错误示例
age = 11
print("我的年龄是" + age)
字符串格式化(多个拼接)
目的:既方便拼接,又支持拼接其他类型
name = "张三"
message = "你好,我亲爱的 %s" % name
print(message)
%s表示:
多个拼接:
shengao = 180
tizhong = 60
message = "我的身高是%s,我的体重是%s。" % (shengao,tizhong)
print(message)
格式要求:多个变量占位,变量要用括号括起来,并且按照占位顺序填入
常用占位符👇:
#混合使用占位符示例
name = "张三"
age = 18
weight = 69.9
message = "我的名字叫%s,我的年龄是%d岁,我的体重是%fKG" % (name,age,weight)
print(message)
格式化的精度控制
我们可以使用辅助符号"m.n"来控制数据的宽度和精度
例如:
字符串格式化方式2
语法:f"内容{变量}"
name = "张三"
age = 18
weight = 69.9
print(f"我的名字叫{name},我的年龄是{age}岁,我的体重是{weight}")
不理会类型,不做精度控制,原样输出
对表达式进行格式化
表达式 定义:一条 具有明确执行结果 的 代码语句
例如👇:
可以直接格式化表达式👇:
★★表达式拼接等同于变量拼接的方法
9,数据输入输出
使用input()语句可以从键盘获取输入,使用一个变量接收(存储)即可
★★input可以自带文字提示
name = input("请告诉我你是谁")
print("吆西,你是%s" % name)
★★input()输入的都是字符串类型,可以用数据类型转换变成其他类型
★★print()默认是输出换行的,想要不换行↓
print("你好",end='')
print("你好",end='')
★★制表符:\t,效果等同于键盘上按下tap键
第三章 判断语句
1,布尔类型和比较运算符
布尔类型
布尔类型的字面量:
定义变量存储布尔类型数据 :
变量名称 = 布尔类型字面量
布尔类型可以自定义,也可以通过计算得来
比较运算符
2,if语句的基本格式
条件成立要做的事可以写很多行↓例子
★★注意:
3,if else 组合判断语句
★★注意:
4,if、elif、else语句的组合使用
简洁写法↓条件中可以直接写input语句,用一个输入一个
★★注意:
5,判断语句的嵌套
关键点:空格缩进控制层级,if、elif、else都可以自由组合
6,判断语句综合案例
# 生成一个随机数
import random
num = random.randint(1,10)
#通过if判断语句进行猜数字
a = int(input("请输入你猜的数字:"))
if a==num:
print("你猜对了")
else:
if a>num:
print("你猜大了,还有两次机会")
else:
print("你猜小了,还有两次机会")
a = int(input("请输入你猜的数字:"))
if a==num:
print("你猜对了")
else:
if a>num:
print("你猜大了,还有一次机会")
else:
print("你猜小了,还有一次机会")
a = int(input("请输入你猜的数字:"))
if a == num:
print("你猜对了")
else:
if a > num:
print("你猜大了,你寄了")
else:
print("你猜小了,你寄了")
第四章 循环语句
1,while循环的基础语法
# 输出100次你好
i=0
while i<100:
print("你好")
i+=1
★★注意:
2,while循环案例(猜数字)
import random
num = random.randint(1,100)
flag = True
count = 0
while flag:
a=int(input("请输入你猜测的数字:"))
count += 1
if a==num:
print("恭喜你猜对了")
flag = False
else:
if a>num:
print("你猜的大了")
else:
print("你猜的小了")
print (f"你一共猜了{count}次")
3,while循环的嵌套
基于空格缩进决定层级关系
4,while循环案例(九九乘法表)
知识补充,详见第二章第九点,print不换行和制表符
#九九乘法表
a=1
while a<=9:
b=1
while b<=a:
print(f"{b}*{a}={a*b}\t",end='')
b+=1
print("")
a+=1
5,for循环的基础语法
可以看出,for循环时将字符串的内容依次取出,所以也叫遍历循环
和while循环不同,for循环无法定义循环条件,只能被动取出数据处理
理论上,for循环无法构建无限循环(被处理的数据集不可能无限大)
6,for循环案例(数数有几个a)
7,range语句
8,for循环临时变量作用域
9,for循环的嵌套使用
10,for循环案例(打印九九乘法表)
#九九乘法表
for a in range(10):
for b in range(1,a+1):
print(f"{b}*{a}={a*b}\t",end='')
print("")
11,循环中断:break和continue
continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可用于:for循环和while循环,效果一致
continue关键字只可以控制:他所在的循环临时中断
break
break关键字作用于:直接结束循环
break可以作用于:for循环和while循环,效果一致
break关键字同样只可以控制:他所在的循环结束
12,综合案例
#发工资
import random
money = 10000
for a in range(1,21):
num = random.randint(1,10)
if money == 0:
break
if num>=5:
money-=1000
print(f"员工{a},绩效{num},发工资1000元,账户余额还剩{money}。")
else:
print(f"员工{a},绩效{num},低于5分,不发工资。")
print("工资发完啦")
#先考虑不发工资跳过的话,就加个continue,我这种写法就不用加
第五章 函数
1,函数初识
函数:是组织好的,可重复使用的,用来实现特定功能的代码段
作用:
将功能封装在函数内,可供随时随地重复利用
提高程序的复用性,减少重复性代码,提高开发效率
2,函数的基础定义语法
函数的定义:
函数的调用:
注意:
3,函数的传入参数
传入参数功能:在函数进行计算的时候,接受外部(调用时)提供的数据
4,函数的返回值定义语法
返回值:函数在执行完成后,返回给调用者的结果
★★遇到return,函数就结束了
5,None类型
None是类型为"NoneType"的字面量,用于表示空的、无意义的
函数如何返回None:
6,函数的说明文档
函数是纯代码语言,想要理解含义就要一行行阅读理解,效率比较低
我们可以给函数添加说明文档,辅助理解函数的作用
通过多行注释的形式,对函数进行解释说明,
内容应写在函数体之前
在Pycharm编写代码时,鼠标悬停就可以查看调用函数的说明文档
7,函数的嵌套调用
函数A中执行到调用哈函数B的语句,会将B全部执行完之后,再继续执行A
8,变量再函数中的作用域
变量的作用域指的是,变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为:局部变量和全局变量
局部变量是定义在函数体内部的变量,即只在函数体内部生效,在外部访问就会出错
作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
全局变量指的是在函数体内、外都能生效的变量
global关键字:设置内部定义的变量为全局变量
9,综合案例(ATM)
#ATM案例
money = 5000000
name = None
def chaxun (show_header):
"""
查询余额
"""
if show_header:
print("========查询余额=====")
print(f"{name}你好,你的当前余额为:{money}元")
menu()
def cunkuan ():
print("========存款=====")
a = int(input(f"{name}你好,请输入你想存入钱的数目:"))
global money
money = money + a
print(f"{name}你好,你成功存入{a}元")
chaxun(False)
menu()
def qukuan ():
print("========取款=====")
a = int(input(f"{name}你好,请输入你想取出钱的数目:"))
global money
money -= a
print(f"{name}你好,你成功取出{a}元,你的当前余额为:{money}元")
menu()
def menu ():
"""
主菜单
"""
print("========主菜单=====")
print(f"{name}你好,欢迎来到ATM")
print("1,\t查询余额")
print("2,\t存款")
print("3,\t取款")
print("4,\t退出")
a = int(input("请输入你想操作的数字序号:"))
if a==1:
chaxun()
elif a==2:
cunkuan ()
elif a==3:
qukuan()
else:
print("操作错误,祝您生活愉快,再见")
name = input("请输入你的名字")
menu()
自己写的能跑,但是可能不够好,下面是标准答案
"""
ATM案例
"""
# 定义全局变量
money = 5000000
name = None
#要求客户输入姓名
name = input("请输入您的姓名")
#定义查询函数
def query(show_header):
if show_header:
print("====查询余额====")
print(f"{name}您好,您的余额剩余:{money}元")
#定义存款函数
def saving(num):
global money
money += num
print("====存款====")
print(f"{name}您好,您存款{money}元成功")
query(False)
#定义取款函数
def get_money(num):
global money
money -= num
print("====取款====")
print(f"{name}您好,您取款{money}元成功")
query(False)
#定义主菜单函数
def main():
print("====主菜单====")
print(f"{name}您好,欢迎来到ATM")
print("查询余额\t\t【输入1】")
print("存款\t\t【输入2】")
print("取款\t\t【输入3】")
print("退出\t\t【输入4】")
return input("请输入你的操作:")
#设置无限循环,确保程序不退出
while True:
keyboard_input = main()
if keyboard_input == "1":
query(True)
continue
elif keyboard_input == "2":
num = int(input("请输入您想存入的钱:"))
saving(num)
continue
elif keyboard_input == "3":
num = int(input("请输入您想取出的钱:"))
saving(num)
continue
else:
print("程序退出")
break
第六章 数据容器
1,数据容器入门
2,数据容器:列表
2.1,列表的定义:
★★注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套
2.2,列表的下标索引
定义:列表的每一个元素,都有编号,称之为下标索引
正向:
反向:
嵌套:[0][1]
注意:超出下标索引的范围,无法取出元素,会报错
2.3,列表的常用操作(方法)
1,列表的操作方法
2,方法的概念
3,查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表名.index(元素名)
index就是列表对象(变量)内置的方法(函数)
namelist = ["张三","李四","王五"]
a = namelist.index("张三")
print(f"张三在列表中的下标索引值是:{a}")
4,列表的修改功能(方法)
4.1修改指定位置(索引)的元素值
语法:列表[下标]=值
可以使用如上语法,直接对指定下标(正向反向下标均可)的值进行:重新赋值(修改)
4.2插入元素
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
4.3追加元素
语法:列表.append(元素),将指定元素,追加到列表的尾部
4.4追加元素方法2
语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部
4.5删除元素
语法1:del列表[下标]
语法2:列表.pop[下标]
4.6删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
4.7清空列表内容
语法:列表.clear()
4.8统计某元素在列表中的数量
语法:列表.count(元素)
4.9统计列表内有多少元素
语法:len.(列表)
4.10,列表的方法总结(速查)★★★
列表的特点:
2.4,列表练习案例
#列表案例
age_list = [21,25,21,23,22,20]
age_list.append(31)
age_list.extend([29,33,30])
a = age_list[0]
b = age_list[-1]
c = age_list.index(31)
print(c)
3,list(列表)的遍历
将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代
3.1,while循环
3.2,for循环
3.3,对比
while循环和for循环,都是循环语句,但细节不同:
3.4,案例:
num_list = [0,1,2,3,4,5,6,7,8,9,10]
list1 = []
list2 = []
a = 0
while a<len(num_list):
a = num_list[a]
if a%2==0:
list1.append(a)
a += 1
print(list1)
for a in num_list:
if a%2==0:
list2.append(a)
print(list2)
4,数据容器:tuple(元组)
4.1,定义
元组同列表一样,都可以封装多个、不同类型的元素,但是最大的不同在于,元组一旦定义完成,就不可修改
4.2,语法
定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
4.3,特点
4.4,相关操作★★★
遍历循环while,for同列表
修改元组的元素会直接报错
4.5,案例
#元组案例
t1 = ("周杰伦",11,["football","music"])
a = t1.index(11)
print(f"年龄所在的下标为{a}")
b = t1[1]
print(f"学生姓名为:{b}")
del t1[2][0]
t1[2].append("coding")
print(t1)
5,数据容器:str(字符串)
5.1,下标
5.2,常用操作(速查)★★★
5.3,特点
5.4,案例(计数替换分割)
6,数据容器的切片
6.1,什么是序列
序列是指:内容连续,、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可视为序列
6.2,序列的常用操作–切片
切片:从一个序列中,取出一个子序列
6.3,案例
7,数据容器:set(集合)
7.1,基本语法
7.2,常用操作
6.3,常用操作(速查)★★★
6.4,集合的特点
6.5,练习
my_list = ['黑马','黑马','it','it','itcast','best']
my_set = set()
for element in my_list:
my_set.add(element)
print(f"列表的内容是:{my_list}")
print(f"通过for循环之后,得到的集合是:{my_set}")
8,数据容器:dict(字典,映射)
8.1字典的定义
字典的定义,使用{},存储的元素是一个个的:键值对,语法如下
★★key不允许重复,重复添加会覆盖原有数据
★★字典和集合一样,不可以使用下标索引,但是字典可以通过key值来取得对应的value
★★字典的key和value可以是任意数据类型(key不可为字典),所以字典也是可以嵌套的
#字典取值
字典名字[key值]
#嵌套字典取值
字典名字[key值][嵌套字典的key值]
8.2,字典的常用操作
pop删除的时候,也可以拿到他的值
遍历字典:
8.3,字典的常用操作(速查)★★★
8.4,字典的特点
8.5,练习
my_dict = {
"王力宏": {
"部门": "科技部", "工资": 3000, "级别": 1
}, "周杰伦": {
"部门": "市场部", "工资": 5000, "级别": 2
}, "林俊杰": {
"部门": "市场部", "工资": 7000, "级别": 3
}, "张学友": {
"部门": "市场部", "工资": 4000, "级别": 1
}, "刘德华": {
"部门": "市场部", "工资": 6000, "级别": 2
}}
print("全体员工当前信息如下:")
for key in my_dict:
print(f"{key}")
print(f"{my_dict[key]}")
print("1级员工升职加薪后,信息如下:")
for key in my_dict:
print(f"{key}")
if my_dict[key]["级别"] ==1:
my_dict[key]["级别"] +=1
my_dict[key]["工资"] += 1000
print(f"{my_dict[key]}")
9,5类数据容器的总结对比
9,数据容器的通用操作
9,扩展–字符串大小比较
第七章 函数进阶
1,函数的多返回值
2,函数的多种传参方式
常见四种:
3,函数作为参数传递
4,lambda匿名函数
函数的定义中
有名称的函数,可以基于名称重复使用
无名称的函数,只可临时使用一次
第八章
1,文件的编码
2,文件的读取
操作汇总(速查★★★)
练习:
#这个是我想的方法
f = open('D:/测试.txt', 'r', encoding="UTF-8")
a = str(f.readlines())
print(f"ithema出现的次数是{a.count("itheima")}")
f.close()
#没想到read直接就是字符串
f = open('D:/测试.txt', 'r', encoding="UTF-8")
count = f.read().count("ithema")
print(f"出现了{count}次")
f.close()
3,文件的写入
4,文件的追加
5,文件操作综合案例
#我写的方法
f1 = open('D:/bill.txt','r',encoding="UTF-8")
print(f1.read())
f2 = open('D:/bill.txt.bak','a',encoding="UTF-8")
for line in open('D:/bill.txt','r',encoding="UTF-8"):
if line.count("测试")==0:
f2.write(line)
continue
f1.close()
f2.close()
这个方法可以避免别的地方有测试字样,直接去除换行然后逗号分割,去找测试那一个段,胖丁之后再加换行,厉害的
第九章
1,了解异常
什么是异常:
当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的bug
2,异常的捕获方法
捕获指定异常:
捕获所有异常
3,异常的传递
4.1,python模块
注意事项:
4.2,自定义模块并导入
但是all没写的可以手动导↑
5,python包
5.1,自定义python包
5.2,安装第三方python包
pycharm安装具体还是去百度叭,这边不详述了
6,异常、模块、包-综合案例
第十章
1,JSON数据格式的转换
什么是json
主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互,类似于:
json有什么用
为了让不同的语言都能够相互通用的互相传递数据,json就是一种非常良好的中转数据格式。如下图,以python和C语言互传数据为例:
总结:
2,pyecharts模块
官网:pyecharts – A Python Echarts Plotting Library built with love.Descriptionhttps://pyecharts.org/
画廊地址:Document (pyecharts.org)https://gallery.pyecharts.org/#/
安装PyEcharts包:
#cmd命令
pip install pyecharts
#这个是国内镜像的,快
python -m pip install pyecharts
#用清华的镜像安装:
#我最后用的这个
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple
进python里导入一下,可以就是安装成功了
#或者用命令看一下版本,有显示就是对的
pip show pyecharts
(↑可能用到的神秘代码,版本0.5.10)
这边要吐槽一下,pycharm里面一开始死活安装不上,后面换了一下解释器,就都可以装了,真的没弄明白
3,pyecharts的入门使用
更多配置可以取官网查,基本上跟前端一样
4,数据处理
第三方数据处理网站:173软件站-专业绿色手游攻略资讯懒人手机软件app下载平台 (ab173.com)https://www.ab173.com/
5,创建折线图
略,详情见视频第一阶段-第十章-06-生成折线图_哔哩哔哩_bilibili
第十一章
1,数据可视化案例-地图
2,全国疫情地图构建
第一阶段-第十一章-02-全国疫情地图构建_哔哩哔哩_bilibili
3,河南省疫情地图绘制
第一阶段-第十一章-03-河南省疫情地图绘制_哔哩哔哩_bilibili
第十二章
这个效果就是那种,各个时段的排行榜,动态的
1,基础柱绘制
2,基础时间线柱状图绘制
3,动态gdp柱状图绘制
剩下略第一阶段-第十二章-03-动态GDP柱状图绘制_哔哩哔哩_bilibili
=========第二阶段========
有点卡,再开一篇吧
python笔记(从入门到入土)2-CSDN博客
========================================================
未完待续(●'◡'●)。。。
作者:许星画