一、Python语法基础
1.Python概述
① 为什么Python如此受欢迎?
面向对象,解释型计算机程序设计语言。
Python兼容性差,很多版本不会向上兼容,推荐使用10/11/12版本,居中版本一般相对稳定。
Python本质上是一个脚本语言。
Python设计哲学:优雅、明确、简单、可读性强。
不要带着Java的思想来看Python,不是一个东西!!!
② Python解释器
Python解释器有这几种:
• CPython官网提供的解释器就是C语言实现的,所以称之为CPython,也是最常用的Python实现,课程中使用的就是CPython作为解释器。
**•**JPython就是JAVA语言实现的解释器,讲Python代码编程成Java字节码执行。
• IronPython是运行在微软Net平台上的Python解析器,直接把Python代码编译成Net字节码。
**•**PyPy使用Python语言实现的Python解析器。
③ Python语言简洁性
python
print "Hello World"
2.Python环境搭建
① Anaconda安装
Anaconda(水蟒):是一个科学计算软件发行版,集成了大量常用扩展包的环境,包含了conda、Python等180多个科学计算包及其依赖项,并且支持所有操作平台。
② 开发工具PyCharm下载
③ 创建安装python虚拟环境
**•**PyCharm关联虚拟环境
**•**虚拟环境的创建和关联【重点】
**•**创建虚拟环境的目的:base基础环境的包太多了,一打开项目加载半天,兼容性问题,一个项目要创建一个虚拟环境,虚拟环境是一个项目配一个,python兼容性非常不好
• anaconda好处就是:一个软件里面安装了多个,而原生的解释器得不断地装多个,anaconda是一个里面安装了多个虚拟环境
**•**D:\app\Anaconda3\envs文件夹检查虚拟环境是否安装成功
1.搜索Anaconda Prompt
2.执行conda create -n kyai4 python=3.10
3.切换虚拟环境命令conda activate kyai4
4.退出虚拟环境命令conda deactivate
(如果没找到新建的虚拟环境就是用管理员模式重新创建一下虚拟环境)
3.Python基础使用
① python注释
python
""""
多行注释
三引号
"""
# 单行注释用井号
"""
注释:就是对代码进行解释说明的文字
"""
② python标识符
python
"""
标识符:程序中的各种名字
常见的名字有:变量名 函数名 类名 方法名...
1.标识符命名规则(必须遵守):
组成:只能有字母、数字、下划线、汉字
注意:不能以数字开头、不能是关键字、严格区分大小写
2.标识符命名规范(建议遵守):
不建议用汉字
命名方法:蛇形命名法(student_name)
大驼峰命名法(StudentName)
小驼峰命名法(studentName)
"""
#(注意:python里面建议都用蛇形命名法,只有类用大驼峰)
③ python字面量/常量
python
"""
字面量:就是程序中被写下来的固定的值
举例:"你好" '你好' 10 3.14 True False
注意:python中的单引号和双引号的功能是一样的,窦都经常用于包裹字符串
"""
#需求:打印一个字符串
print("hello world")
print('hello world')
#需求:打印一个整数
print(10)
#需求:打印一个浮点数
print(3.14)
#需求:打印一个布尔值
print(True)
print(False)
④ python变量
python
"""
变量:程序中用于记录数据变化的抽象概念
变量定义格式:变量名 = 变量值
上述格式解释:把=后面的变量值赋值给=前面的变量
"""
#需求:打印一个字符串变量
a = "Hello Word"
print(a)
#需求:打印一个整数变量
b = 10
print(b)
#需求:打印一个浮点数变量
c = 3.14
print(c)
#需求:打印一个布尔变量
d = True
print(d)
⑤ python的数据类型
python
"""
数据类型:python中的字面量对应的类型
常见的有: 字符串:str 整数:int 浮点数:float 布尔值:bool
注意:变量本身没有类型,只有字面量数据才有类型
type(x):查看x的数据类型
"""
# 1.查看字面量类型
print(type('你好')) # <class 'str'>
print(type(10)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
#2.type()查看变量的类型,本质查看的是变量记录的数据的类型
a = 'hello world'
print(type(a))
b = 10
print(type(b))
c = 3.14
print(type(c))
d = True
print(type(d))
python
"""
str(x):把指定的x转换为字符串类型(任意类型都能转换为字符串)
int(x):把指定的x转换为证书类型(中文不能转,浮点数转换会丢失精度)
float(x):把指定的x转换为浮点数类型(中文不能转,整数转换类似乘以1.0)
"""
# str(x):把指定的x转换为字符串类型
print(10 + 20) # 30
print("10" + "20") # 1020
print(str(10) + str(20)) # 1020
# int(x):把指定的x转换为证书类型
# print(int('你好')) # 报错
print(int(3.14)) # 3
print(int(3.94)) # 3
# float(x):把指定的x转换为浮点数类型
print(float(3)) # 3.0
# print(float('你好')) # 报错
⑥ python输出数据函数
python
"""
print(各种数据):把括号的数据打印到控制台
如何查看源代码:按住ctrl+鼠标左键点击进入
print(*args,sep=' ',end='\n')
参数解释:
*args:代表可以打印多个内容,用逗号分隔
sep:代表打印的多个内容在控制台上用默认的空格分隔
end:代表所有内容打印完后默认是换行操作
"""
print(1,2,3,4)
print(1,2,3,4,sep='/',end='!!!') # 1/2/3/4!!!
⑦ python输入数据函数
python
"""
输入函数使用格式:变量 = input(提示语)
input(提示语):
上述格式解释:
1.先把提示语展示到控制台
2.input()等待并接收用户的输入内容
3.把接收到的内容赋值给左边的变量
"""
# 需求:依次接收用户录入的用户名,年龄,身高
name = input("请输入用户名:")
age = input("请输入年龄:")
height = input("请输入身高:")
# 注意:input()默认接收的都是字符串类型
print('你输入的内容类型:',type(name),type(age),type(height))
print("用户名:",name,"年龄:",age,"身高:",height)
# 格式化输出变量
# 方式1:占位符%s给字符串占位 %d给数字占位 %f给浮点数占位
print("您输入的姓名为%s,年龄为%s,身高为%s"%(name,int(age),float(height)))
#方式2:format方式(推荐)
print(f"您输入的名字是:{name},年龄是:{age},身高是:{height}")
⑧ python运算符
python
"""
算数运算符:+、-、*、/、//、%、**
赋值运算符:=
复合赋值运算符:+=、-=、*=、/=、//=、%=、**=
比较运算符:==、!=、>、>=、<、<=
逻辑运算符:and、or、not
"""
# 算数运算符:+、-、*、/、//、%、**
print(10 + 3) # 13
print(10 - 3) # 7
print(10 * 3) # 30
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
print(10 ** 3) # 1000
# 赋值运算符:=
a = 10
print(a) # 10
# 复合赋值运算符:+=、-=、*=、/=、//=、%=、**=
a += 3 # a = a + 3
print(a) # 13
a -= 3 # a = a - 3
print(a) # 10
a *= 3 # a = a * 3
print(a) # 30
a /= 3 # a = a / 3
print(a) # 10.0
a //= 3 # a = a // 3
print(a) # 3.0
a %= 3 # a = a % 3
print(a) # 0.0
a **= 3 # a = a ** 3
print(a) # 0.0
# 比较运算符:==、!=、>、>=、<、<=
print(10 == 3) # False
print(10 != 3) # True
print(10 > 3) # True
print(10 >= 3) # True
print(10 < 3) # False
print(10 <= 3) # False
print("========")
# 逻辑运算符:and、or、not
print(False and False) # False
print(False and True) # False
print(True and True) # True
print(False or False) # False
print(False or True) # True
print(not True) # false
⑨ random随机数
python
# 1.导包
import random
# 2.生成随机数 注意:包左包右
random_num = random.randint(1,10)
print(random_num)
⑩ if判断
python
"""
if格式有三种:
格式1如下
if条件:
满足条件执行的代码
格式2如下
if条件:
满足条件执行的代码
else:
不满足条件执行的代码
格式3如下
if条件1:
满足条件1执行的代码
elif条件2:
满足条件2执行的代码
...
else:
不满足所有条件执行的代码
"""
# 需求1:判断年龄大于18就可以去网吧了
age = 18
if age >= 18:
print("可以去网吧了")
# 需求2:判断年龄大于18就可以去网吧了,否则回去写作业吧
age = 17
if age >= 18:
print("可以去网吧了")
else:
print("回去写作业吧")
#需求3:考试成绩等级判断
score = 60
if 0<= score <= 100:
print("分数正常,接下来判断等级")
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
else:
print("分数异常")
⑪ for循环和while循环
python
"""
for循环格式如下 x:起始值默认0 y:计数值(不含) z:步长
for 临时变量 in range(x,y,z):
循环体
while循环格式如下
while 条件:
循环体
"""
# 需求1:打印1-5
for i in range(1,6):
print(i)
j = 1
while j <= 5:
print(j)
j += 1
print('===========')
# 需求2:循环依次打印135
for i in range(1,6,2):
print(i)
j = 1
while j <= 5:
print(j)
j += 2
print('===========')
⑫ 猜数字游戏
python
"""
补充循环知识点:
break:直接结束循环
continue:跳过本次循环,继续下一次循环
猜数字游戏分析
1.系统随机出1-100的数字作为底数
2.让用户无限猜,知道猜中位置
3.每次判断用户猜的数和底数大小,并给出提示
"""
# 1.系统随机出1-100的数字作为底数
import random
rand_num = random.randint(1, 100)
print(f"只有内部人知道的底数是:{rand_num}")
# 2.让用户无限猜,知道猜中位置
while True:
guess_num = int(input("请输入您本次猜的数:"))
# 3.每次判断用户猜的数和底数大小,并给出提示
if 1<= guess_num <= 100:
if guess_num > rand_num:
print("您输入的数字太大了")
elif guess_num < rand_num:
print("您输入的数字太小了")
else:
print("恭喜您猜对了")
break
else:
print("请输入1-100的数字")
4.Python容器/函数/面向对象
① python五大容器
容器:能够存储多个元素的python数据类型
1) 字符串容器
符号:引号 ''、""、""""""
是否可变:不可变类型
元素:字符
python
"""
字符串:用引号包裹,元素是字符,任意类型都可以转换为字符串
字符串是不可变类型
字符串支持索引:
正索引:从0开始,从左到右依次递增
负索引:从-1开始,从头到左依次递减
"""
#1.定义空字符串
s1 = ""
print(s1,type(s1))
s1 = ''
print(s1,type(s1))
s1 = """"""
print(s1,type(s1))
s1 = ''''''
print(s1,type(s1))
#2.定义非空字符串
s2 = "你好"
print(s2,type(s2))
s2 = '你好'
print(s2,type(s2))
s2 = """你好"""
print(s2,type(s2))
s2 = '''你好'''
print(s2,type(s2))
#3.字符串的索引
#正索引:0 1 2
#负索引:-1 -2 -3
# 需求:获取第一个字符
name = "程序员"
print(name[0])
#需求:获取最后一个字符
print(name[-1])
#需求:获取第二个字符
print(name[1])
#4.字符串的功能函数
# 4.1查询相关函数
# 注意:字符串功能特别多,这里只介绍常用的
text = "程序员hello world程序员ai大模型开发"
#需求:统计text中字符的个数
print(len(text))
# 需求:统计text中"程序员"出现的次数
print(text.count("程序员"))
# 需求:判断text中是否包含"员"
print("员" in text)
# 需求:查看text中'员'出现的正索引位置
print(text.index("员")) #从左往右
print(text.rindex("员")) #从右往左
# 注意:index和rindex弊端是如果查找的内容不存在就报错
# print(text.index("6")) #报错
# print(text.rindex("6")) #报错
# 注意:find和rfind好处是如果查找的内容不存在就返回-1
print(text.find("6"))
print(text.rfind("6"))
# 4.2 其他相关函数
# split():根据指定符号切割字符串,返回列表
info = "A,B,C,D,E,F,G"
info_list = info.split(",")
print(info_list) # ['A', 'B', 'C', 'D', 'E', 'F', 'G']
# join():把容器(列表)中的元素用指定分隔符连接成字符
info2 = '-'.join(info_list)
print(info2) # A-B-C-D-E-F-G
# upper():所有字母转换大写
print('abcABC'.upper()) # ABCABC
# lower():所有字母转换小写
print('ABCabc'.lower()) # abcabc
# startswith(x):判断字符串是否以x开头
print("西游记".startswith("西")) # True
# endswith(x):判断字符串是否以x结尾
print("三国演义".endswith("三")) # False
# replace(old,new):替换字符串中old为new
print("你TMD...".replace("TMD","***"))
print(" 张三 ".replace(" ",""))
# strip():去除两端空白
print(" 张三 ".strip())
2) 列表容器
符号:中括号 []
是否可变:可变类型
元素:任意类型
python
"""容器"""
"""
列表:用中括号[],元素是任意类型
列表是可变类型
字符串支持索引:
正索引:从0开始,从左到右依次递增
负索引:从-1开始,从右到左依次递减
"""
# 1.定义空列表
l1 = []
print(l1,type(l1))
l1 = list()
print(l1,type(l1))
# 2.定义非空列表
l2 = ['你好',10,3.14,True]
print(l2,type(l2))
# 虽然列表中元素是任意类型,但是建议存储同类型的
name_list = ['张三','王五','赵六']
print(name_list,type(name_list))
age_list = [18,19,20]
print(age_list,type(age_list))
# 列表支持嵌套
big_list = [name_list,age_list]
print(big_list,type(big_list))
# 3.列表索引
names = ['张三','王五','赵六','张三']
# 需求:获取列表的长度
print(len(names))
# 需求:获取张三的个数
print(names.count('张三'))
# 需求:判断张三是否在列表中
print('张三' in names)
# 需求:获取张三的位置
print(names.index('张三'))
# 4.2 列表的增删改
# 需求:定义空列表
names = []
print(names)
# append()1次追加1个 需求:往names列表中添加"张三"和"李四"
names.append('张三')
names.append('李四')
print(names)
# insert()插入 需求:把"熊大"插入到第一个位置
names.insert(0,'熊大')
print(names)
# extend() 1次追加多个 需求:往names列表中添加"王五"和"赵六"
names.extend(['王五','赵六'])
print(names)
# 把最后一个元素修改为"老五
names[-1] = '老五'
print(names)
# remove()删除指定元素
names.remove('老五')
print(names)
# pop()根据索引删除对应元素
names.pop(0)
print(names)
# clear()清空列表
names.clear()
print(names)
3) 元组容器
符号:小括号 ()
是否可变:不可变类型
元素:任意类型
4) 集合容器
符号:大括号 {}
是否可变:可变类型
元素:不可变类型
5) 字典容器
符号:大括号 {}
是否可变:可变类型
元素:键值对 k:v
键:不可变类型
值:任意类型
② 序列
1) 切片操作
获取子串
③ 推导式
1) 列表推导式
2) 集合推导式
3) 字典推导式
④ python函数
函数:提前组织好的,可以重复使用的,具有特定功能的代码段

