pycharm中一些快捷键:
ctrl +c 复制
ctrl +v 粘贴
ctrl +s 保存
ctrl +x 剪切
ctrl +a 全选
ctrl +z 回退一步
ctrl +d 复制当前行
ctrl +y 删除当前行
ctrl + / 快速注释、解开注释
pass(常用)
占位符 没有实质的作用,就是用来占个位置而已,常用与构思的阶段
在python中,很多的语法规定必须要代码在哪里,但是在构思阶段你
还不知道写什么代码就放在个pass在那里
assert 断言
语法:
assert 表达式
assert 表达式,"报错提示"
本质如下:
if 表达式:
程序继续执行
else:
程序报错,不再继续往下执行
Eg:
使用场景:
明明 assert 会令程序崩溃,为什么还要使用它呢?
这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,
就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。
一.基本知识:
①.用户交互:
输入 将一些数据给计算机 计算机接受你的数据
输出 计算机将一些数据输出 打印在屏幕上
输出:
print() 将print里面的数据 打印输出在屏幕上
print(666)
对于这个print()还有几个用法
同时输出多个数据
多个数据之间用,好隔开
print(数据1,数据2,....)
默认这种方式,多个数据之间有个空格隔开,如果你不想空格隔开,可以怎么做——print(数据1,数据2,...,sep='隔开的内容')
默认每次print之后.都会自带一个换行的效果,如果你不想,可以这样做——print(数据1, 数据2...,end='结尾内容')
输入:
input()
只要程序执行到了这个input ,程序马上就会卡住,等待你输入东西给计算机,你输入完了以后,敲enter,计算机就可以得到刚刚输入的数据
程序就可以继续往下走
注意:不管你输入的数据是什么样子,input接受到的永远都是str字符串类型
input('提示信息')
1:卸载&安装python和pycharm
2:更改环境变量
3:了解python的用途
二.基本语法和变量:
1:运行python的代码方式有
1)临时的 在python解释器内部写代码 为临时保存 不能永久保存,临时调试
2)永久的 将代码写入文件python文件路径 为永久保存代码
pycharm中提供了更方便的操作,(图形界面化的形式)
注意:在pycharm中运行的到底是哪一份文件
2:在python运行代码中都是英文符号,这是规定
3:python语言是为了控制计算机,是为了让计算机具备人的某一项技能,即给予计算机人的技 能解放人力
4:了解Pycharm界面
1)tips:
pycharm中会看到很多波浪线
a:红色的波浪线:通常是语法有错误
b:其他颜色的波浪线,不是报错,不影响代码运行,但是不规范
规定:类比法律 没有遵守python的规定 电脑看不懂 就会报错
规范:类比道德 python认为你按照他的规范写代码,更好看
2)bug/报错
a.语法错误——SyntaxError
你写的代码有问题,不符合python的语法,电脑看不懂
b.Error (异常)
你写的代码逻辑有问题,需要跟报错提示 去更改代码
c.bug 一点点的分析你的代码
你运行程序后的结果和你的预期不符合
3)注释
a.什么是注释:注释就是对代码解释说明且注释了的内容不会被当作代码运行
b.为什么要注释:最主要的目的是为了增强代码的可读性,方便理解,并且在开发的时候 可以临时的调试代码
c.注释的种类:
单行注释:以英文#号开头的,在这个#号后面的一行内容都是注释,都不会被执行
多行注释:用三对英文单(双)引号,引号内的内容都是注释
d.什么情况下写注释:
只对难以理解的地方写注释
拓展:# todo 为更显眼的颜色
5.变量
变量是可以发生改变的量 可以用来临时保存数据
为什么要有变量:
为了计算机像人一样具备临时记忆的功能
从底层上来讲:数据保存在内存,变量就是这一块内存空间的名字
一个变量是由3个东西组成的:
1.数据类型(type)
2.内存地址(id)
3.值(value)
可以把变量理解为是一个"仓库":
数据类型就是仓库的类型
变量值就是仓库里的东西
内存地址就是仓库的位置
变量的定义:
变量名 = 变量值
a = 666
number = 19120412127
变量名应符合对应的规则规范.这里简单提一条
变量命名应尽量见名知意.看到变量就知道它是用来做什么的
变量名的规定(标识符取名要讲究):
1. 只能是字母,数字,英文下划线的组合
2. 不能数字开头
3. 不能是python的关键字 关键字:Python提前规定好了,有特殊的意义的 字符
变量有三大特性
1. id
反应的是变量在内存中的唯一编号,内存地址不同id肯定不同,内存地址相同id 肯定相同
内存地址相同,请问内存中保存的数据是不是同一个?
用id 是否相同来判断是不是同一个数据
2. type数据类型
请问什么是数据类型
Python中有不同样的数据,所以有不同的数据类型
type 用来查看这个数据的数据类型是什么
数据类型不一样 一般玩不到一块去
3. value
数据 直接使用变量名 通过变量名就找到数据
任何一个知识点或者技术一定是为了解决一个实际存在的问题而诞生的
在定义的时候系统发生了什么?
1.在内存中开辟了一个空间
2.将代码放到这个内存空间中去
3.将这个内存地址绑定给这个变量名
三.数据类型:
1:为什么要有数据类型:更好的利用内存 更好的操作数据
2:在python中也有数据类型的分类 使用的频率排名
1)int:整形
整形:用于记录整数和一些基本运算
没有小数点的数字
用来存储整数数据: 人数, 年龄, 游戏等级, 点赞数, 头发数量
声明方式:
变量名 = 整数值 Eg: age = 666 num = 888
int()
了解 1. 将其他进制的数字转成十进制 不是主要作用
2. 将只有数字的字符串转变成为 整型 一定要是只有数字不能有小数
2)float:浮点型
浮点型:用来纪录小数 (存在一些运算误差,通过一些其他的模块来解决精准度问题)
用来存储一些小数数据: 金额, 体重, 股票, 身高
声明方式:
变量名 = 浮点值 Eg:money = 888888.88
注:int和float都和数字有关系可以自己简称为 数字类型
且int和float可以一起玩 一起玩的时候 会自动的将int转为float
数字类型一般用于数学运算和比较大小
在计算的时候可以有一下操作来消除浮点计算的误差
Eg1: Eg2:
a = 0.1 import decimal
b = 0.2 a = decimal.Decimal('0.1')
print((a*10+b*10)/10) b = decimal.Decimal('0.2')
ptint(a+b)
3)bool 布尔类型
布尔类型是用来做判断的一种类型, 它只有两种值, 真和假.True可以作为1使用 False可以作为0使用
Ture 对 False 错
声明方式:
变量名 = True
变量名 = False
Eg:1 + 1 > 2 False
注:所有的数据中,除了0,0.0,'',[],(),{},{},None(0 0.0 空字符串 空列表 空元组 空字典 空集合 None)
都是False,其他的都是True 且一般用来做判断,和if结合使用
4) str 字符串
文字符号串在一起 用来记录描述一些东西
字符串的表现形式为用一对引号(单引号,双引号,三引号)包裹起来的数据,里面可以存放汉语,字母,特殊符号等字符、
需要注意的是 单包双,双包单,转义符 Eg:print('我是'老杨') # 报错,引号没有成对 print("我是'老杨") print('我是"老杨')
还可以用这种方式解决
print('我是\'老杨') # \ 转义符 转变一些意思 \n 表示换行的意思
print('我\n是') # \n 中间就有了个换行
print(r'我\n是') # r 取消掉\ 转义符的作用
声明方式:
变量名 = '字符串内容'
注意:
a.三对引号的问题可以实现换行的效果,带格式 多行注释必须顶格写,如果不是定格写的,就会当做字符串来处理使用
b.字符串可以进行相加,表示字符串的拼接,可以和一个整型相乘,表示将这个字符串重复多少次
c.字符串的内容只可以看不能改
# todo str() 将其他的数据类型强行转变为字符串
字符串.strip() #剔除了这个字符串左右两边的空白 todo 常用于input().strip() 切记以后都要用上
注意:无法剔除字符间的空白
字符串.strip('符号') #剔除了这个字符串左右两边的指定的符号
print(字符串.split()) #将字符串按某个符号分离输出成列表,如果括号内没有填写符号就默认为空格分离
了解的操作:
print(字符串.lower()) #将英文字符串全部变为小写
print(字符串.upper()) #将英文字符串全部变为大写
5)list 列表
列表的表现形式为,用[ ]中括号包裹起来的数据,里面的数据用逗号隔开,泪飙里可以存放多种类型的数据
声明方式:
列表名 = [值1, 值2, 值3, 等等]
通过下标更改列表
a = [‘你好呀,你还好吗‘]
a[0] = ‘你在干嘛‘
print(a)
#结果为a = [‘你在干嘛,你还好吗‘]
但是如果下标不存在就会报错
列表.append() todo 给一个列表的屁股加一个元素 必须记住
# a = [1,2,3]
# a.append([1])
# print(a)
列表.extend() todo 给一个列表屁股后面一次性加多个元素
# a = [1,2,3]
# a.extend('123') # 将这个字符串的每一个字符追击进去
# print(a)
# a = [1,2,3]
# a.extend([1,2,3]) # 将这个列表的每一个元素追击进去
# print(a)
列表.insert(索引,要加的元素) todo 在指定的位置插入元素
# a = [1,2,3]
# a.insert(3,666) # 将这个元素插入到指定的索引的位置
# print(a)
6)set 集合
集合的表现形式为用大括号{ }包裹起来的数据,里面的数据用逗号隔开,集合不会储存重复数据
集合的特点:
1. 每个元素必须是不可变类型(字符串,元组,布尔,整型,浮点型)
2. 集合内没有重复的元素
声明方式:
集合名 = {数据1, 数据2, 数据3....}
set1 = {1, 2, 32 ,45 ,45 ,66 ,1}#重复数据不会进入集合内存里,输出时是正常去重的数据
创建集合:set()
一般使用集合主要是下面的两大情景
1.利用集合集合内没有重复的元素的特性去重,先将一个列表转成集合,再将这个集合转回列表,那么这个列表中重复的元素就去除了
a = [1,2,2,2,2,2,2,3]
b = list(set(a))
print(b)
2.用于关系运算-交集-并集等等
7)dict 字典
字典形式为用大括号{ }包裹起来的数据,里面的数据用逗号隔开,并且是用键值对的方式储存数据
键值对 = 键: 值 key:value
1. 通过键来得到值
2. 键可以是字符串,整型,浮点,元祖,布尔 常用字符串 不能是列表,集合,字典
3. 字典的值可以是任意类型
4. 字典的键必须是唯一的,不会重复
键与值直接存在对应关系,可以理解为键为名,值为数据,值可以放大部分类型(数据类型散列,包括后续的函数都可以作为值)
声明方式:
字典名 = {键:值, 键: 值, .....}
kylin = {
‘姓名’:‘张三’
‘身高’:‘177.5’
‘余额’:‘545.22’
}
print(kylin[‘身高’])#输出结果为177.5
# todo 注意注意:如果这个键不存在,就取不出来会报错\\\\
********
所以,我们推荐下面这个写法
字典.get(键,默认值)
Eg: dic = {'爱好': '打游戏'}
print(dic.get('我是一个不存在的键','哈哈哈,我是值')) #输出 哈哈哈,我是值
print(dic.get('爱好','哈哈哈,我是值')) #输出
print(dic.get('爱好111')) #如果默认值不写,默认给你一个None
todo 以后对于字典的根据键去取到他的值,都推荐用这个,它的好处是
todo 如果这个键存在,那么就得到这个键的值,如果这个键不存在,也不会报错
todo 而是得到你写的默认值,如果你默认值都没写,那也不会报错,而是给你一个None
todo 好处:不会报错
对于字典,可以根据键来修改值或者新增一个值
字典[键] = 值
如果字典中存在这个键,就表示将这个键的值改成新的值
如果字典中不存在这个键,就表示添加这么一个键值对
Eg:dic = {'爱好': '打游戏'}
dic['爱好'] = '唱歌' # 有这个键 就改值
print(dic)
dic['年龄'] = 18 # 没有这个键 就增加
print(dic)
字典.pop(键)
删除这个字典的这个键值对,如果没有这个键就报错,会返回这个删除的键的值
dic = {'爱好': '打游戏','年龄':18}
print(dic.pop('爱好'))
print(dic)
8)tuple(元组)
元组的表现为小括号()包裹起来的数据,里面的数据用逗号隔开,元组里可以存放多种类型的数据,元组
内的数据是不可以修改的!!!
声明方式:
元组名 = (值1,值2,值3等等)
注意的问题
1. 如 果元祖里面只有一个元素,那么一定要在这个元素后面加一个逗号
如果一个括号里面只有一个元素,这个元素后面没有加,那么这个元素是什么数据类型就是什么数据类型
值发生了改变,内存地址就变化了,这种数据类型就叫做不可变数据类型
例如:字符串,整型,浮点型,元祖
值发生了改变,内存地址没有变化了,这种数据类型就叫做可变数据类型
例如:列表,字典,集合
索引 # todo 适用于字符串,列表,元组
索引是指通过下标,获取到对应数据的操作
索引越界: 你不能得到没有这个位置的索引列表的嵌套
Eg:a = ['张三','李四','王五'] # 定义一个列表 索引
# a = ['张三',1,1.1,] # 定义一个列表 索引
print(a[0]) # 张三
print(a[-1]) # 王五
切片 # todo 适用于字符串,列表,元组
切片是指通过下标,取出'多个'对应数据有的操作,用索引是一个一个的取出数据,却偏则是一片片的取数据
语法:序列名[起点: 终点]
注意:切片取数据特性为'包头不包尾',终点值实际上是到前一位的数据,Eg:[0:9]实际上取数据范围为0:8且起点与终点值
可以空着不写即从'头'开始,如终点空着不写,即取到'尾'
步长 # todo 适用于字符串,列表,元组
取数据正常是一位一位的取,可以通过设置步长,多位的取
Eg: num = '123456789'
序列名[起点:终点:步长]
print(num[::2]) #输出13579
print(num[::-1]) #输出987654321
下标 # todo 适用于字符串,列表,元组
字符串就是一串,只能保存一个值,如果要保存多个值的时候,就需要用到列表了,列表是按照位置记录多个值的
每个值都有位置的,我们就可以按照位置来得到这个值定义列表,可以按照位置取出这个位置对应的值
位置是怎么算的 从左边开始 0,1,2,3.... 从右边开始-1,-2,-3,-4.....
in # todo 检查是否包含 适用于字符串,列表,元组,字典,集合
Eg:print(数据类型1 in 数据类型1) # todo 左右两个数据类型要相同
结果为 Ture 或者 false
len # todo 表示数据中有多少个元素 适用于字符串,列表,元组,字典(查看键值对的个数),集合
Eg:print(len(数据类型))