python
你好 python
阶段、章节、小节
初识python
底层:C++ 性能
上层:python 简单高效
什么是编程语言
人类语言翻译成计算机能够听懂的语言→人类与计算机进行交流
计算机只认识0和1的二进制
由程序(解释器or翻译器)将代码翻译为二进制→计算机get了
(思考:为什么存在十进制呢?)
为什么不直接把中文翻译为二进制?
人类的语言有不同的语气、表达,翻译起来更为复杂。
Python环境安装
Python官方网站地址:python.org
安装完成,验证安装:win-cmd-python
第一个Python程序
cmd→python→出现三个向右的箭头,表示可以写代码→回车是运行程序
命令指示符:win+r
python解释器
因为计算机只能读懂0和1,配置环境,本质上就是安装python解释器程序
python解释器:计算机程序,用来翻译python代码,并提交给计算机执行。
解译器功能:1.翻译代码 2.提交给计算机运行
python解译器的位置:
.py文件是什么?python语言的代码文件,里面记录了python的代码。
python开发环境
python开发环境
(也就是在哪写)
下载
www.jetbrains.com
community社区版
PyCharm文件管理
pycharm是以工程做基本的管理单位的
venv:虚拟环境
base conda:人工智能相关的包
custom envrionment 自定义环境
(为什么在.venv界面下,新建文件会出现一个外部库?)
鼠标滚轮改变字号:
pycharm常用快捷键:
python基础语法
字面量
含义:在代码中,被写下来的固定的值
整数(int) 现实写法一致
浮点数(float) 现实写法一致
字符串(string)字符串需用双引号””包围
注释
含义:对代码解释说明的文字
分类:单行注释 #
多行注释:一对三个双引号 “”” 多行注释”””
变量
1.变量就是在程序运行时,记录数据用的
2.特征是变量的值可以改变
3.格式:变量名称=变量值
4.print可以输出多份内容
5.做减法(+、-、*、/)(变量记录数据,可以重复使用它,尤其是数据量极大时,能够减少工作量)
数据类型
三类数据类型:string (str)、int、float
type()语句得到数据的类型
1.print(type()),直接输出类型信息
2.用变量存储type()的结果(返回值)
3.查看变量中存储的数据类型
数据类型转换
# 将数字类型转换成字符串
num_str = str(666)
print(type(num_str), num_str)
float_str = str(13.14)
print(type(float_str), float_str)
# 将字符串转换成数字
num1 = int("11")
print(type(num1), num1)
num2 = float("11.345")
print(type(num2), num2)
# 错误示例,想要将字符串转换成数字,必须要求字符串内的内容都是数字
# num3 = int("黑马程序员")
# print(type(num3), num3)
# 万物皆可转字符串,只要加上双引号就可以,但是字符串不可以转数字
# 整数转浮点数
float_num = float(11)
print(type(float_num), float_num)
# 浮点数转整数
int_num =int (11.234)
print(type(int_num), int_num)
标识符
在编程的时候所使用的一系列名字,用于给变量、类、方法命名
1.内容限定(英文、中文<不推荐>、数字<不可以用在开头>、下划线_)
2.大小写敏感
3.不可使用关键字
变量的命名规范:
1.见名知意
2.下划线命名法
3.英文字母全小写
运算符
赋值运算符
例子:
"""
演示Python中各类运算符
"""
# 算术运算符
print("1+1=" , 1+1)
print("2-1=" , 2-1)
print("3*3=" , 3*3)
print("9/3=" , 9/3)
# 整除
print("9//2=" , 9//2)
# 取余
print("13%4=" , 13%4)
# 指数
print("2**4=" , 2**4)
# 赋值运算符
num = 1*2+4
# 复合赋值运算符
# += 将右侧的值加到左侧的变量上,然后将结果重新赋值给左侧的变量
num = 1
num +=1 # num = num + 1
print("num += 1:",num)
# -= 将右侧的值减到左侧的变量上,然后将结果重新赋值给左侧的变量
num -=1 # num = num - 1
print("num -= 1:",num)
# *=
num *= 4 # num = num * 4
print("num *= 4:",num)
num /= 2 # num = num / 2
print("num /= 2:",num)
num = 3
num %= 2
print("num %= 2:",num)
num **= 2
print("num **2:",num)
num = 9
num //= 2 # 将num整除2 结果赋值给num,也就是num//2=4
print("num //2:",num)
字符串拓展
字符串的三种定义方式
如果想要定义字符串本身,是包含:单引号、双引号自身呢?如何写?
单引号定义法,可以内含双引号
双引号定义法。可以内含单引号
可以使用转移字符(左斜杠)来将引号解除效用,变成普通字符串)
-
字符串拼接
-
字符串格式化
-
格式化精度控制
-
字符串格式化方式2
-
对表达式进行格式化
字符串拼接
字符串格式化
字符串格式化
数字类型占位
格式化的精度控制
字符串格式化的方式2
字符串格式化-快速写法
对表达式进行格式化
数据输入(input语句)
总结
Python的判断语句
布尔类型和比较运算符
比较运算符
if语句的基本格式
if的注意点
总结
案例
"""
成年人判断
"""
# 通过input语句,获取键盘输入,为变量age赋值(注意转换数字类型)。因为input所有输出内容都是字符串
age = int(input("请输入你的年龄:"))
# 通过if判断是否是成年人,满足条件则输出提示信息
if age >= 18:
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费")
print("您已成年,游玩需要补票10元")
print("祝您游玩愉快")
if else组合判断语句
总结
案例
"""
我要买票吗
"""
print("欢迎来到黑马动物园")
height = int(input("请输入你的身高(cm):"))
if height > 120:
print("您的身高超出120cm,游玩需要购票,10元")
else:
print("您的身高未超过120cm,可以免费游玩")
print("祝您游玩愉快")
if _elif_else组合使用的语法
多个条件
课程讲解案例
"""
组合用法
"""
height = int(input("请输入你的身高(cm):"))
vip_level = int(input("请输入你的VIP等级(1-5):"))
day = int(input("请告诉我今天是几号:"))
# 通过if判断,可以使用多条件判断的语法
if height < 120:
print("身高小于120cm,可以免费")
elif vip_level >3:
print("vip级别大于3,可以免费")
elif day ==1:
print("今天是1号免费日,可以免费")
else:
print("不好意思,条件都不满足,需要买票10元")
# 节省代码量
print("欢迎来到黑马动物园")
if int(input("请输入你的身高(cm):")) < 120:
print("身高小于120cm,可以免费")
elif int(input("请输入你的VIP等级(1-5):")) > 3:
print("vip级别大于3,可以免费")
elif int(input("请告诉我今天是几号:")) == 1:
print("今天是1号免费日,可以免费")
else:
print("不好意思,条件都不满足,需要买票10元")
练习案例
"""
猜猜心里数字
"""
# 定义一个变量
num = 6
if (int(input("请输入第一个猜想的数字:"))) == num:
print("恭喜第一次猜对了")
elif (int(input("猜错了,再猜一次:"))) == num:
print("猜对了")
elif (int(input("猜错了,再猜一次:"))) == num:
print("恭喜,最后一次猜对了")
else:
print("sorry,猜错了")
判断语句的嵌套
自由组合的形式,分不同层次的形式就是判断语句的嵌套了
总结
判断语句的综合案例
"""
终极猜数字
"""
# 1.构建一个随机的数字变量
import random
num = random.randint(1,10)
guess_num = int(input("输入你要猜测的数字:"))
# 2.通过if判断语句进行数字的猜测
if guess_num == num:
print("恭喜,第一次就猜对了")
else:
if guess_num > num:
print("你猜测的数字大了")
if guess_num < num:
print("你猜测的数字小了")
guess_num = int(input("输入你要猜测的数字:"))
if guess_num == num:
print("恭喜,第二次猜对了")
else:
if guess_num > num:
print("你猜测的数字大了")
if guess_num < num:
print("你猜测的数字小了")
guess_num = int(input("输入你要猜测的数字:"))
if guess_num == num:
print("恭喜你,第三次猜对了")
else:
print("你都猜错了" )
Python循环语句
while循环的基础语法
练习案例(没审好题,以为是循环列出1到100的值,但其实是求和)
案例
"""
猜数字
"""
# 获取范围在1-100的随机数字
import random
num = random.randint(1,100)
# 定义一个变量,记录总共猜测了多少次
count = 0
# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num=int(input("请输入你猜测的数字"))
count +=1
if guess_num == num:
print("你猜对了")
flag = False
else:
if guess_num > num:
print("你猜的大了")
else:
print("你猜的小了")
print(f"你总共猜测了{count}次")
while循环的嵌套使用
注意点
while循环案例—九九乘法表
print输出不换行
制表符
九九乘法表
# print("hello",end='')
# print("world",end='')
# print("hello\tworld")
# print("itheima\best")
"""
九九乘法口诀
"""
# 定义外层循环的控制变量
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
print(f"{j} * {i} = {j * i}\t",end='')
j += 1
i += 1
print() # print空内容,就是输出一个换行
for循环的基础语法
for循环:对待办事项一个一个处理
总结
range 语句
range语句
总结
for循环临时变量作用域
总结
for循环的嵌套使用
"""
嵌套应用for循环
"""
# 坚持表白100天,每天都送10朵花
i = 1
for i in range(1,101):
print(f"今天是跟小美表白的第{i}天,加油坚持")
# 内层循环
for j in range(1,11):
print(f"给小美送的第{j}朵玫瑰花")
print("小美,我喜欢你")
print(f"第{i}天,表白成功")
for循环打印九九乘法表
"""
for循环打印九九乘法表
"""
# 外层循环控制行数
for i in range(1,10):
# 定义内层循环控制变量,为什么要+1呢?因为range语句,是不包含右括号旁边的数值的,在这里也就是不包含i+1
for j in range(1,i+1):
print(f"{j}*{i} = {j*i}\t",end='')
# 外层循环可以通过print输出一个回车符
print()
continue和break
continue循环
break循环
两者都只在循环内使用
循环综合案例
# 某公司,账户余额有1W元,给20名员工发工资。
# 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
# 如果工资发完了,结束发工资。
# 定义账户余额变量
money = 10000
# for循环给员工发工资,随机生成绩效
for i in range(1,21):
import random
score = random.randint(1,10)
if score < 5:
print(f"员工{i}绩效分{score},不满足,不发工资,下一位")
# continue跳过发放
continue
# 要判断余额足不足
if money >= 1000:
money -= 1000
print(f"员工{i},满足条件发放工资1000,公司账户余额{money}")
else:
print(f"余额不足,当前余额:{money}元,不足以发放工资,不发了,下个月发")
break
python函数
函数的初体验
函数:可以得到一个针对特定需求、可供重复利用的代码块,提高程序复用性,减少重复性代码,提高开发效率。
函数的基础定义语法
函数的传入参数
传入参数的作用
语法解析
参数练习案例
"""
升级版自动查核酸
"""
def check(num):
print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!")
if num <= 37.3:
print(f"体温测量中,您的体温是:{num},体温正常请进")
else:
print(f"体温测量中,您的体温是:{num},需要隔离")
check(38)
函数的返回值定义语法
返回值语法
总结
函数的返回值之None类型
None含义
None应用场景(3个)
总结
函数的说明文档
函数的嵌套调用
定义
执行过程
总结
变量在函数中的作用域
局部变量
全局变量
总结
函数综合案例
"""
函数综合案例 控制台ATM
"""
# 定义全局变量 money name
money = 5000000
name = None
# 要求客户输入姓名
name = input("请输入您的姓名")
#定义查询余额函数
def query(show_header):
if show_header:
print("----------查询余额----------")
print(f"{name},您的余额剩余:{money}")
# 定义存款函数
def saving(num):
global money # money 在函数内部定义为全局变量
money += num
print("----------存款----------")
print(f"{name},您好,您存款{money}元成功")
# 通过query函数查询余额
query(False)
# 定义取款函数
def get_money(num):
global money
print("----------取款----------")
print(f"周杰伦,您好,您取款{num}元成功")
# 通过query函数查询余额
query(False)
# 定义主菜单函数
def main():
print("----------主菜单----------")
print(f"{name},您好,欢迎来到黑马程序员ATM,请选择操作")
print("查询余额\t[输入1]")
print("存款\t\t[输入2]") # 通过\t制表符对齐
print("取款\t\t[输入3]")
print("退出\t\t[输入4]")
return input("请输入你的选择")
# 退出(设置无限循环,确保程序不退出)
while True:
keyboard_input = main()
if keyboard_input == "1":
query(True)
continue # 通过continue继续下一次循环,一进来就是进入了主菜单
elif keyboard_input == "2":
num = int(input("您想要存多少钱?请输入:"))
saving(num)
elif keyboard_input == "3":
num = int(input("您想要取多少钱?请输入:"))
get_money(num)
continue
else:
print("程序退出了")
break
python数据容器
数据容器入门
数据容器
总结
数据容器-列表
list列表的定义语法
列表定义
案例演示
总结
列表的下标索引
从列表中取出想要取的元素
语法:列表[下标索引]
反向取值元素
嵌套索引
# 取出嵌套列表的元素
my_list = [(1, 2, 3), [4, 5, 6]]
print(my_list[1][1])
总结
列表的常用操作方法
列表常用操作
列表的查询功能
将函数定义为class(类)的成员,函数就被称之为:方法
详细操作方法:
1.查找某元素在列表内的下标索引
语法:列表.index(元素)
index = mylist.index("itheima")
print(f"itheima在列表中的下标索引值是:{index}")
index就是列表对象(变量)内置的方法(函数)
2.修改特定下标索引的值
语法:列表[下标] = 值
mylist = ["itcast","itheima","python"]
mylist[0] = "传智教育"
print(f"列表被修改元素后,结果是:{mylist}")
3.插入元素
语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
mylist = ["itcast","itheima","python"]
mylist.insert(1,"best")
print(f"列表插入元素后,结果是:{mylist}")
5.追加元素
①语法:列表.append(元素),将指定元素,追加到列表尾部
mylist = ["itcast","itheima","python"]
mylist.append("黑马程序员")
print(f"列表在追加了元素后,结果是:{mylist}")
②语法:列表extend(其它数据容器), 将其它数据容器的内容取出,依次追加到列表尾部
mylist2 = [1,2,3]
mylist.extend(mylist2)
print(f"列表在追加了新的列表后,结果是:{mylist}")
4.删除元素
- del列表[下标]
python
mylist = ["itcast","itheima","python"]
del mylist[2]
print(f"列表删除元素后的结果是:{mylist}")
- 列表.pop(下标)
python
mylist = ["itcast","itheima","python"]
mylist.pop(0)
element = mylist.pop(0)
print(f"通过pop方法取出元素后列表内容:{mylist},取出的元素师:{element}")
- 删除某元素在列表中的第一个匹配项:列表.remove(元素)
python
mylist = ["itcast","itheima","itcast","itheima","python"]
mylist.remove("itheima")
print(f"通过remove方法移除元素后,列表的结果是:{mylist}")
- 清空列表内容,语法:列表.clear()
python
mylist.clear()
print(f"列表被清空了,结果是:{mylist}")
5 统计某元素在列表内的数量
语法:列表.count(元素)
mylist = ["itcast","itheima","itcast","itheima","python"]
count = mylist.count("itheima")
print(f"列表中的itheima的数量是:{count}")
6 统计列表内,有多少元素
语法:len(列表)
mylist = ["itcast","itheima","itcast","itheima","python"]
count = len(mylist)
print(f"列表的元素数量总共有:{count}")
说明-格局
列表的特点
列表的循环遍历
列表的遍历-while循环
遍历:将容器内的元素依次取出进行处理的行为
列表的遍历-for循环
两者对比
总结
课后练习(第一次独立写那么长的代码,疯狂鼓掌,另感谢gpt的特别出席!)
"""
列表的遍历应用:取出列表内的偶数
"""
# 定义一个列表
mylist = [1,2,3,4,5,6,7,8,9,10]
mylist2 =[]
# while循环
index = 0
def list_while_func():
"""
使用while循环遍历列表的演示函数
:return: None
"""
global index
while index < len(mylist):
element = mylist[index]
if element % 2 == 0:
mylist2.append(element)
index += 1
# for 循环
def list_for_func():
"""
使用for循环遍历列表的演示函数
:return: None
"""
for element in mylist:
if element % 2 == 0:
mylist2.append(element)
# 清空 mylist2 后运行两个函数
mylist2.clear()
list_while_func()
# 在调用完 while 循环后,打印结果
print(f"通过while循环,从列表:{mylist}中取出偶数,组成新列表{mylist2}")
mylist2.clear() # 清空 mylist2,避免重复
list_for_func()
print(f"通过for循环,从列表:{mylist}中取出偶数,组成新列表{mylist2}")
元组的定义和操作
元组定义
元组特点
总结
练习
字符串的定义和操作
字符串
字符串的常用操作
字符串的分割:字符串.split(分隔符字符串)
注意:字符串本身不变,而是得到一个列表对象
字符串的规整操作
字符串常用操作
字符串的遍历
"""
字符串遍历
"""
my_str = "黑马程序员"
index = 0
while index < len(my_str):
print(my_str[index])
index += 1
my_str = "黑马程序员"
for i in my_str:
print(i)
字符串的特点
总结
数据容器(序列)切片
定义
切片定义
从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
"""
对序列进行切片,从1开始,4结束,步长1
"""
# 对列表list进行切片,从1开始,4结束,步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]
print(f"结果1:{result1}")
# 对元组tuple进行切片,从头开始,到最后结束,步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:] # 起始和结束不写表示从头到尾,步长为1
print(f"结果1:{result2}")
# 对字符串str进行切片,从头开始,到最后结束,步长2
my_str = "01234567"
result3 = my_str[::2]
print(f"结果1:{result3}")
# 对str进行切片,从头开始,到最后结束,步长-1
my_str = "01234567"
result4 = my_str[::-1] #-1表示从后向前取 等于将序列翻转了
print(f"结果1:{result4}")
# 对列表进行切片,从3开始,到1结束,步长-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"结果1:{result5}")
# 对元组进行切片,从头开始,到尾结束,步长-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"结果1:{result6}")
总结
练习案例:序列的切片实践
"""
序列的切片实践
"""
# 请使用学过的任何方式,得到"黑马程序员”
my_str = "月过万薪, 员序程马黑来, nohtyp学"
# 可用方式参考:
# 1、倒序字符串,切片取出或切片取出,然后倒序
# 2、split分隔","replace替换"来"为空,倒序字符串
# 倒序字符串,切片取出
result1 = my_str[::-1][9:14]
print(result1)
# 切片取出,然后倒序:从10开始到4结束,步长为-1 ? 也是可以滴 反向步长的切片可以从右往左取字符串
# result = my_str[9:4:-1]
# print(result)
result3 = my_str[5:10][::-1]
print(result3)
# split分隔","replace替换"来"为空,倒序字符串
my_str = "月过万薪, 员序程马黑来, nohtyp学"
result4 = my_str.split(", ")[1].replace("来","")[::-1]
print(result4)