本篇用于记录学习的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就欧克了
常用快捷键
- ctrl+ alt +s:打开软件设置
- ctrl+ d∶复制当前行代码
- shift + alt +上\下:将当前行代码上移或下移
- crtl + shift + f10∶运行当前代码文件
- shift + f6∶重命名文件
- ctrl+a:全选
- ctrl + c\v\x︰复制、粘贴、剪切
- ctrl+ f:搜索
- 选中多行+Tab/shift+Tab:多行同时缩进
- ctrl+ /:快速注释
第二章 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,数据类型转换
用途:
- 从文件中读取的数字,默认是字符串,我们需要转换成数字类型
- 后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
- 将数字转换成字符串用以写出到外部系统
- 等
★★这三个语句都是带有返回值的,可以直接输出也可以用变量接
★★万物皆可转字符串,反之不行,整数转浮点数会加小数部分,反之会丢失精度(丢失小数部分)
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表示:
- %表示:我要占位
- 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"来控制数据的宽度和精度
- m 控制宽度,要求是数字(很少使用),若设置的宽度小于数字自身,则不生效
- .n 控制小数点精度,要求是数字,会进行小数的四舍五入
例如:
字符串格式化方式2
语法:f"内容{变量}"
name = "张三"
age = 18
weight = 69.9
print(f"我的名字叫{name},我的年龄是{age}岁,我的体重是{weight}")
不理会类型,不做精度控制,原样输出
对表达式进行格式化
表达式 定义:一条 具有明确执行结果 的 代码语句
例如👇:
可以直接格式化表达式👇:
★★表达式拼接等同于变量拼接的方法
9,数据输入输出
- 数据输出:print()
- 数据输入:input()
使用input()语句可以从键盘获取输入,使用一个变量接收(存储)即可
★★input可以自带文字提示
name = input("请告诉我你是谁")
print("吆西,你是%s" % name)
★★input()输入的都是字符串类型,可以用数据类型转换变成其他类型
★★print()默认是输出换行的,想要不换行↓
print("你好",end='')
print("你好",end='')
★★制表符:\t,效果等同于键盘上按下tap键
第三章 判断语句
1,布尔类型和比较运算符
布尔类型
布尔类型的字面量:
- True 表示真(是,肯定)
- False 表示假(否,否定)
定义变量存储布尔类型数据 :
变量名称 = 布尔类型字面量
布尔类型可以自定义,也可以通过计算得来
比较运算符
2,if语句的基本格式
条件成立要做的事可以写很多行↓例子
★★注意:
- 判断语句的结果,必须是布尔类型
- 归属于if判断的代码语句块,需在前方填充4个空格缩进
- 不要忘记冒号
3,if else 组合判断语句
★★注意:
- else后面不需要判断条件,但是别忘记冒号
- else代码块,也需要四个空格缩进
4,if、elif、else语句的组合使用
简洁写法↓条件中可以直接写input语句,用一个输入一个
★★注意:
- elif可以写多个
- 判断是互斥且有顺序的,前面的if满足了,后面就不判断了
- else也可以不写,效果等同于三个独立的if判断
- 四个空格缩进
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
★★注意:
- while的条件需要得到布尔类型,true表示继续循环,false表示结束循环
- 需要设置循环终止的条件,不设置就是无限循环
- 空格缩进和if判断一样,
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循环的嵌套使用
- 空格缩进
- for循环和while循环可以相互嵌套使用
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:
- 不使用return语句,即返回None
- 主动return 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**63-1、922337203685477580个)
- 可容纳不同类型的元素(混装)
- 数据是有序存储的(有下标序号)
- 允许重复数据存在
- 可以修改(增删)
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,对比
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,练习
8,数据容器:dict(字典)
9,数据容器的通用操作
10,综合案例
======未完待续=========
========================================================
未完待续(●'◡'●)。。。