使用pycharm Python有6种数据类型
-
整数
-
浮点数
-
字符串
字符串需要用"“包围起来
基本内容
字面量
1 2 3
666 13.14 "我是"
1 2 3 4
# 进行输出字面量(**print**) print(666) print(13.14) print("黑马程序员")
注释
1 2 3 4 5 6 7 8 9 10 11 12 13
# 以#作为开头,以一个空格隔开(单行注释) """ 多行注释的使用 可以换行 """ 666# 一个整数字面量 13.14# 浮点数字面量 print(666) print(13.14) print("黑马程序员")# 输出字符串字面量 """ 多行注释可以用来 """
ctrl+/ 快速注释
tab ,shift+tab 实现缩进与退4格变量
- 记录数据用的(储存)
变量名称=变量值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
money=49 print("钱包还有:",money)# print可以输出多个数据,使用,隔开即可 50-10 50/2 50*2 money=money-10# 通过变量减 print("钱包还有:",money) print("钱包还有:", money,"元,因为买了10元的冰淇淋") ''' 为什么使用变量,为了重复使用它 ''' print("现在是下午1点,钱包剩余:",money) print("现在是下午2点,钱包剩余:",money) print("现在是下午3点,钱包剩余:",money) print("现在是下午4点,钱包剩余:",money) # 变量的值可以改变!!! # print输出多份内容:print(1,2,3,4)
作业
1 2 3 4
print("当前钱包余额:",50,"元") print("花费:",10,"元") print("花费:",10,"元") print("最终钱包剩余:",35,"元")
数据类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
""" 数据是有类型的 可以使用type函数进行 使用变量储存type返回值 """ print(type("我们")) print(type(666)) print(type(11.233)) a=type("wm") b=type(444) print(a) # 上述查看了字面量的类型 # 还可以看看吧变量中储存数据的类型 name="ssss" name_type=type(name) print(name_type) # 以上三种方式!!! # type是查看输出的类型(数据的类型) # 而非变量的类型,而是变量存储的数据的类型。
类型 描述 说明 string 字符串 int 整形 float 浮点数 在python中,变量所存储的类型是无需声明的
变量在python中是没有类型的
type有返回值(目前的第一个有返回值的)数据类型转换
为什么转换?
- input默认是字符串
三种:
- int
- float
- str
三者是有返回值的
|
|
标识符
标识符和变量的关系
标识符包括变量、类、方法。
三个规则
- 内容限定
1. 英文
2. 中文(不推荐使用)
3. 数字(不能用在开头)
4. 下划线_- 大小写敏感
1. a!=A- 不可使用关键字
1. 不需要背
2. 大小写敏感也适用于关键字
|
|
规范
- 明了
- 简短
- 下划线命名法
- 英文字母小写或驼峰命名法
运算符
- 算术运算符
使用
|
|
- 赋值运算符
|
|
字符串拓展
字符串的定义
- 单引号定义
- 双引号
- 三引号”““ssss””"(用变量接受为字符串,反之为注释)
==最常用为双引号==
字符串包括’ “
- 单引号定义
- 双引号定义
- 转义字符
|
|
字符串的拼接
-
+号
字面量与变量拼接
1 2 3 4 5 6
print("我是"+"cb") print("woshi","cb")# 逗号分割中间会有空格 age=19 print("wojinnian"+str(age)+"suile") # 实现类型转换的拼接 # 因为只能实现字符串的拼接
字符串的格式化
- 变量太多事,拼接太麻烦了
- 无法与其他类型拼接
占位的方式 与c语言类似的地方
%s相当于+str()的形式
%用来占位
s声明类型
|
|
- %s 字符串
- %d 整数
- %f 浮点数
这里的sdf实际上实现了类型转换
必须符合之前的要求
格式化的精度控制
m.n来控制 m为宽度,n为小数精度
%7.2f %5d
小数部分和小数点也会计入宽度
小数部分四舍五入
m比本身宽度小时,不生效
|
|
快速格式化的方式
f”{}" 不限数据类型,不做精度控制,原样输出
|
|
f"{变量}{变量}“的方式
==适合对精度没有要求==
表达式的格式化
表达式:一条有明确执行结果的代码语句
- 1+1、5*2
- 变量的定义
|
|
小作业:
|
|
数据输入
input语句
终于开始输入了 获取键盘的输入
- print——输出
- inpuu——输入
|
|
小作业
|
|
语句学习
布尔类型和比较运算符
布尔类型 表示真假 比较运算
- 布尔类型
是否
是一种数字类型- Ture(真) 1
- False(假) 0
赋值
比较运算
|
|
六种比较运算符
if语句基本格式
布尔类型在判断语句中的作用
|
|
- if后面必须是布尔类型
- 不要忘记冒号
- 属于if的雨具有四个空格缩进
if else语句
组合使用(不符合时输出的值)
|
|
if elif else
多条件判断的实现
if 条件:
elif 条件:
else:
|
|
注意事项
- elif语句可以有很多个
- 判断是互斥和有顺序的
- 空格缩进不可以省去 从而实现多个条件的判断
判断语句的嵌套
终极用法
嵌套使用
外层判断——>内层判断
- 注意层次关系,空格缩进!
python的缩进十分重要,与c不同
1 2 3 4 5 6 7 8
if int(input("你的身高是多少:"))>120: print("身高不达标") if int(input("你的级别:"))<4: print("级别不达标") else: print("级别达标") else : print("身高达标")
用缩进来区分代码块!!!
猜数字游戏
|
|
多层嵌套,但是太过复杂了!
循环语句while
|
|
案例
|
|
- 条件为布尔类型,Ture为继续循环,False为结束循环
- 设置循环的终止条件
- 同样需要空格确定代码归属
数字炸弹游戏
|
|
while循环嵌套使用
|
|
- 同理,缩进决定层次关系!
- 循环体条件需要改变!避免无限循环
- 难点:条件的控制,每一层有自己的循环条件
嵌套案例
print输出不换行的实现
|
|
制表符\t
|
|
99乘法表
|
|
for循环
基本语法
- while是自定义循环条件
- for是“轮询”机制,一个个执行
|
|
- 无法定义循环条件
- 同样需要缩进
|
|
range语句
待处理数据集称为序列类型
- 包括字符串、列表、元组等
- 其内容可以一个个依次取出
- range语句生成一个简单的数字序列
语法:
- range(num)为0开始,到num-1
- range(num1,num2) 不含num2
- range(num1,num2,step) step为步径
|
|
变量作用域
|
|
全局变量,局部变量
想访问临时变量,可以先在循环外进行定义
for的嵌套
|
|
空格缩进确定层次关系
在嵌套中尤为重要!!
- for与while循环可以嵌套使用
|
|
循环中断
- break
- continue
- 跳出某次循环 ,进入下一次
- 直接结束循环
|
|
|
|
案例
|
|
函数
函数介绍
- 函数是可以重复使用的,有特定功能的代码段
- 比如len()函数,str()
|
|
函数语法
|
|
- 参数不需要可以省略
- 返回值也可有可无
- 函数必须先定义后使用
函数参数的传入
**函数计算式,接受外部提供的数据
|
|
- 形参、实参
- 参数数量不限,使用逗号分开
- 传入参数时,要与形参一一对应,逗号隔开
|
|
函数返回值
|
|
None返回值
无返回值函数实际上就是返回了None这个字面量
return None也可以,和不加这句一样
|
|
三种基本的用法
函数说明文档
|
|
通过多行注释,解释参数,返回值和功能!!
函数的嵌套调用
在一个函数中调用另一个函数
|
|
b执行完成后才会执行a的剩余内容
变量的作用域
- 局部变量
|
|
- 全局变量
|
|
- 在函数内修改全局变量
|
|
如何修改
|
|
综合案例
|
|
数据容器
入门
- 一种可以容纳多分数据的数据类型
- 容纳的数据元素
按照:
- 重复元素
- 是否可以修改
- 是否有序
可以分为列表、元组、字符串、集合、字典
列表
列表的定义
一个人的名字可以用字符串
100个人使用列表
|
|
定义
|
|
- 元素类型没有限制!
列表的下标索引
- 在列表中取出对应位置的数据
|
|
列表的常用操作
- 插入
- 删除
- 清空
- 修改
- 统计元素个数
方法与函数
如果将函数定义为class的成员,函数称为方法
查询,添加
|
|
删除
|
|
统计数量
|
|
例题
|
|
列表的遍历
将容器内的元素取出
|
|
for循环受限,但是用起来会比较简单
- 所以for循环使用的次数多一点
|
|
元组
- 元组不可以修改
- 元组使用()定义
|
|
|
|
元组的操作
- 元组不可修改
|
|
也可以遍历,做法与列表相同
- 元组里的元素不能修改
- 但是元组内的嵌套列表可以修改
|
|
总结
字符串(作为数据容器)
- 再认字符串
- 是字符的容器
|
|
总结
- 只可以存储字符串
- 不可以修改(增减元素)
字符串案例
|
|
数据容器的切片
- 序列 内容连续、有序、可使用下标索引的一类数据容器
- 切片
从序列中取一个子序列
|
|
|
|
集合
- 之前都支持重复,集合不支持,去重
- 内容无序
|
|
- 集合无序,不支持下标索引
- 允许修改
|
|
字典
定义
- key-value
|
|
字典的常用操作
|
|
总结
字典例题
|
|
总结对比
- 是否支持下标索引
- 支持:列表、元组、字符串-序列
- 不支持:集合、字典
- 重复元素:
- 支持:列表、元组、字符串-序列类型
- 不支持:集合、字典-非序列类型
- 是否可以修改
- 支持:列表、集合、字典
- 不支持:元组、字符串
表格对比
应用场景
通用操作
- 都可以for循环遍历
- len(),max(),min()
|
|
- 通用转换功能
|
|
展示一下通用转化的结果
![]()
![]()
可见字典转字符串所有元素都能保留下来
![]()
集合数据的无序性和去重性质
- 通用排序功能
|
|
排序的结果是:[1, 2, 3, 4, 5]
排序的结果是:[1, 2, 3, 4, 5]
排序的结果是:[‘a’, ‘b’, ‘c’, ’d’, ’e’, ‘f’, ‘g’]
排序的结果是:[1, 2, 3, 4, 5]
排序的结果是:[‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’]
总结
字符串大小的比较
基于ASCLL码比较
按位比较,一位一位进行,只要有一位大,那么整体就大,后面不需要了
|
|
函数进阶
多返回值
如何返回多个返回值
|
|
多种传参方式
- 位置参数 按找传入参数的位置来确定传入的参数(一般用的)
- 关键字参数
以键值对的形式进行传参数
|
|
- 缺省参数
给一个不传递时的默认参数
|
|
- 不定长参数
不确定传递多少参数!!!
|
|
总结
匿名函数
传入函数
将函数作为参数传入
|
|
这是计算逻辑的传递,而非数据的传递
这里数据确定了,但是计算逻辑不确定
实现函数调用接口的功能?
比如一个函数需要再不同情况下调用不同函数(计算逻辑),就可以使用这种函数调用快速实现!
|
|
lambda定义匿名函数
- def定义带有名称的
- lambda定义匿名,只能临时使用一次
lambda 变量:一行代码
只能一行
|
|
作用是简化?
文件
编码
- 文件通过编码为二进制,存在电脑中,也可以反向翻译回去
- UTF-8
- 编码本,有多种编码的方式
读取操作
- 文本文件,视频文件、音频文件、图像文件、可执行文件等等
- 操作:打开,读写,关闭
- 打开
|
|
r:以只读方式打开
w:打开一个文件只用于写入,文件已存在则删除原有内容
a:打开文件用于追加,已存在则写入原有的内容之后!不存在则创建新的
- 打开
|
|
- 读取
|
|
- 关闭
|
|
- 总结:
作业
|
|
除了readlines为列表,其他都是字符串返回
文件的写操作
open打开
write写入
flush刷新
- 直接write时,内容并未真正写入文件。在内存中,缓冲区
- flush时才会真正写入
|
|
文件的追加操作
将之前的"w"改为"a"即可
|
|
\n:换行
文件操作综合
|
|
异常
什么是异常
- 错误时,解释器无法继续执行,BUG
异常的捕获方式
- warning
- error
|
|
else,finally可有可无的部分
|
|
异常的传递
|
|
Python模块
模块的导入
- 什么是模块
- 一个Python文件,有函数、类、变量
- 将模块当做工具包使用
语法:
|
|
from
|
|
as
|
|
模块导入一般写在开头
自定义模块
|
|
Python包
自定义包
- 储存模块(py文件),是个文件夹
- 包含多个模块文件,且包含_init_.py文件
- 创建自己的
在根目录下创建目录,再在目录下写模块
|
|
总结
安装第三方包
在cmd中输入pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
基础综合案例
折线图
json数据
- 负责不同编程语言的流通的数据格式
- 实现不同语言的传递,中转