1 认识python
1.1 认识python
计算机识别机器语言,机器语言由二进制0和1组成
计算机要执行高级语言,转换方式
- 编译 : C语言、C++、java。 一次性编译成可执行文件
- 解释 : 一行一行地解释
python是解释型语言
python解释器、pycharm编辑器
举个例子:
要给工地煮饭
编译:把饭菜都做好,做成盒饭(.exe,.class)。带到工地,只需要加热即可使用
解释型:把原材料和锅都带到工地,现场炒菜。
编程语言是用来定义计算机程序的语言,用来向计算机发出指令。
python语言是一种面向对象的解释型计算机程序设计语言
python是强类型动态脚本语言
- 强类型:不允许不同类型相加
- 动态:不使用显示数据类型声明,比如说a=10
- 脚本语言:一般是解释型语言,运行代码只需要一个解释器
1.2 第一个程序
1.2.1 使用cmd命令执行
新建一个python文件
注:要显示后缀名
1print("hello world")
在cmd中输入
python xxx.py
1.2.2 使用pycharm执行
在pycharm中配置python解释器
在pycharm中新建一个项目
新建python文件
写入print("hello world")
运行即可
1.3 BUG
bug的翻译是一个虫子,表示电脑系统中隐藏的错误与缺陷
invalid syntax 无效语法
unexpected indent 缩进问题
中文符号和英文符号是不一样的
缩进也要注意
tab 向右缩进
shift+tab 向左缩进
1.4 注释
对代码进行解释说明
在执行的时候,注释是不会被执行的。
单行注释:任意位置都可以了
多行注释:要服从缩进要求
1.4.1 单行注释
1# 单行注释 2print("Hello") 3
快捷键:Ctrl+/
撤销 : Ctrl+z
复制到下一行:Ctrl+d
搜索: Ctrl+F
1.4.2 多行注释
1''' 2这是三个单引号的多行注释 3这是三个单引号的多行注释 4这是三个单引号的多行注释 5''' 6print("hello") 7""" 8这是三个双引号的多行注释 9这是三个双引号的多行注释 10这是三个双引号的多行注释 11""" 12
2 变量
2.1 运算符
1+ #加 2- #减 3* #乘 4/ #除 5// #整除 6% #取余 7** #幂次方 8 9 101/2 # 得到1.5 111//2 # 得到0 125//2 # 得到2 133**2 # 得到9 142**3 # 2*2*2=8 159%2 # 得到1 16 17 18优先级: 19幂运算 ** 20乘、除、取余、取整除 + 、 % // 21加减 + - 22 234*2**3 #幂运算的优先级较高 24
1 2= #赋值运算符 3+= # n += 1 等价于 n = n+1 4-= # n -= 1 等价于 n = n-1 5*= # n *= 2 等价于 n = n*2 6/= # n /= 2 等价于 n = n/2 7%= 8**= 9//= 10 11
2.2 变量
将运行的结果保存起来
概念:一个容器,计算机当中的存储空间
作用:在计算机内保存数据
保存数据的格式: 变量名=值
在python中是没有变量类型的,变量名更像是一个便利贴,把便利贴贴到数据上。
举个例子:
某城市要打造运动城市,那么就需要盖很多的运动场馆,每个场馆就是一个变量。
对于C语言、C++、Java等语言,
如果要举办足球比赛,那么就需要专门搭建一个足球场。在这个足球场馆中只能举办足球比赛。
如果要举办篮球比赛,那么就需要专门搭建篮球场馆。
1int a; //搭建一个int场馆 2a = 10 //只能放int类型的数据 3char b; //搭建一个shar场馆 4b = 'c' //只能放char类型的数据
对于Python、javascript等语言,
不需要专门搭建场馆,随便指定个场馆,贴个足球场的牌子,就称为了足球场。
贴个篮球场的牌子,就成了篮球馆。
1a = 10 # 贴个便利贴,这是int场馆 2a = 'c' # 贴个便利贴,这是char场馆
查看变量类型
1a = 100 2print(type(a)) 3a = "python" 4print(type(a)) 5
2.3 变量的命名规范
变量的命名规范
- 只能由数字,字母,_(下划线)组成
- 不能数字开头
- 不能是关键字
- 区分大小写
注意:变量要见名知义
1 2a_1 = "a" 3aaa = "c" 4a12 = "d" 5_a = 20 62a = "c" #错误,不能以数字开头 7print = 10 #错误不能用关键字 8type = 20 #错误不能使用关键字 9he!he = 20 #不可以,!不能出现 10 11A = 10 12a = 20 13print(A) #区分大小写的 14print(a) #区分大小写的 15 16 17# 可以使用中文,但是不推荐 18年龄 = 18 19print(年龄)
1# 查看所有关键字 2 3import keyword 4print(keyword.kwlist) 5
下划线分割命名法
1my_name = "张三" 2my_job = "律师" 3
驼峰命名法
1myName = "张三" 2myJob = "律师" 3 4FirstName = "伊丽莎白" 5
2.4 输入输出
输出
1 2print(123) 3print("张三") 4 5a = ''' 6张三 7李四 8''' 9print(a) 10
转义字符
1\t #表示制表符,表示4个空格 2print("abc\tdef") 3 4\n #表示换行符 5print("hello\nworld") 6 7\r 相当于回车 8print("hello\rworld") 9 10\\ 表示反斜杠符号 11print("hell\\o") 12 13
input函数
1name = input("请输入名字") 2print(name) 3
3 数据类型
3.1 数据类型
int 整数类型 : 任意大小的整数
float 浮点型
bool 布尔型
complex 复数(了解)
1a = 10 2print(type(a)) #整数 3 4b = 10.2 5print(type(b)) # 浮点数 6 7c = True #bool类型 8print(type(c)) 9# True相当于非零 10# False相当于零 11print(False+2) 12 13# 复数 包含 实部和虚部 14# 固定写法 z = a+bj 其中a为实部,b为虚部 15print(1+2j) 16a = 1+2j 17b = 3+4j 18print(a+b) 19print(a*b) 20
3.2 字符串
名称:str
1# 字符串要加引号,单引号、双引号、三引号都可以 2name = "zhangsan" 3print(name) 4print(type(name)) #字符串类型 5 6name2 = '伞兵一号,准备就绪' 7print(name2) 8print(type(name2)) 9 10# 用三引号进行定义 11name3 = ''' 12你怎么睡得着的? 13你这个年龄段睡得着觉? 14''' 15print(name3) 16
字符串的运算符
1+ # 字符串拼接 2a1 = "hello " + "python" 3print(a1) 4 5a1 = "hello" 6b1 = "teacher" 7print(a1+" "+b1) 8 9* # 重复输出 10print("hello"*3) 11print(a1*3) 12 13# 成员运算符:检查字符串中是否包含了某个字符 14# in 15# not in 16a1 = 'hello' 17print('h' in a1) #判断a1中是否包含h 18print('h' not in a1) #判断a1中是否不包含h 19 20 21 22
3.3 下标及切片
下标是从0开始的
1 2# 下标: 从0开始 3name = 'python' 4print(name) 5print(name[0]) #写法:字符串名[下标] 6print(name[4]) 7print(name[10]) # 数组越界,超出下标范围 8 9print(name[-1]) #取最后一个 10print(name[-2]) #取倒数第二个 11
切片,截取一段数据
[起始:结束:步长]
1# [起始:结束:步长] 2name = "python" 3print(name[0:3:1]) #左闭右开 4print(name[0:3]) #左闭右开 5 6print(name[2:4]) 7 8print(name[-3:-5]) #空,没有取到 9print(name[4:2]) #空 10print(name[-5:-3]) #导数第五个开始 11 12# 步长 表示选取间隔 不写步长,默认是1 13# 步长的绝对值大小绝对值决定数据的间隔,正负号决定方向 14print(name[4:2:-1]) #从右往左取 15print(name[-3:-5:-1]) 16 17print(name[3:]) # hon 18print(name[:]) #python 19 20print(name[::2]) #pto 21 22# 对字符串进行逆序 23print(name[::-1]) #nohtyp 24 25
3.4 格式化输出
占位符
| 占位符 | 作用 |
|---|---|
| %s | 字符串 |
| %d | 整数 |
| %4d | 整数,四位,如果不足前面补充空白 |
| %f | 浮点数 |
| %.4f | 设置小数位数,四舍五入 |
| %% | 输出% |
1# 占位符 %格式化输出 2# %s 字符串 3name = "张三" 4print("这是一个字符串:%s" % name) 5print("年龄:%d,姓名%s"%(18,name)) 6 7a = 1.2345 8print("%f"%a) #默认后六位 9 10
format() 使用多括号来代替百分号
1print("我是{},年龄{}".format("张三",20)) 2
f 表达式
1name = "张三" 2age = 18 3print(f"我叫:{name},今年:{age}") 4
3.5 类型转换
待补充
4 if 判断
根据条件是否满足,来执行相应的代码
1age = 16 2if age >= 18: #英文冒号 3 print("已经成年了")
4.1 比较运算符
比较运算符
1 2== # 两个变量的值是否相等 3!= # 比较值是否不相等 4a = 4 5b = 3 6if a>b: 7 print("a的值大") 8 9print(a == b) 10print(a != b) 11 12if a==b: 13 print("a和b相等") 14
4.2 逻辑运算符
1and 与 2or 或 3not 非 4 5# and 需要两个都成立才行 6name = "zhangsan" 7age = 18 8if name == "zhangsan" and age == 18: 9 print("两个都满足") 10 11if name == "zhangsan" or age == 18: 12 print("两个满足一个即可") 13 14if not (name=="zhangsan"): 15 print("不等于张三")
4.3 if-else
1age = 16 2if age>=18: 3 print("已经成年了") 4else: 5 print("还没有成年") 6 7 8a = 1 9b = 2 10if a < b: 11 print("a比b小") 12else: 13 print("a比b大") 14 15
4.4 三目运算符
1# a if a>b else b 2# 格式 为真的结果 if 判断条件 else 为假的结果 3 4a = 1 5b = 2 6print('a比b小' if a<b else 'a比b大') 7 8
4.5 if-elif
1 2if 条件1: 3 代码语句 4elif 条件2: 5 代码语句 6elif 条件3: 7 代码语句 8 9sc = 85 10if sc >= 85: 11 print("优秀") 12elif sc >= 75 and sc <=84: 13 print("良好") 14elif sc >= 60 and sc < 75: 15 print("及格") 16elif sc >= 0 and sc <60 17 print("不及格") 18
python中可以使用连不等,其他语言不行
1sc = int(input("请输入成绩")) 2 3if 85 <= sc <= 100: 4 print("优秀") 5elif 75 <= sc < 85: 6 print("良好") 7elif 60 <= sc < 75: 8 print("及格") 9elif 0 <= sc < 60: 10 print("不及格") 11else: 12 print("成绩无效")
4.6 if嵌套
1if 条件1: 2 if 条件2: 3 执行语句 4 5d = 0 #是否有车偏偏 6d = 1 #是否有危险品 7 8if p==1: 9 print("你有票,开始安检") 10 if d==1: 11 print("有危险品,不能进去") 12 else: 13 print("可以进站了") 14else: 15 print("赶紧抢票")
5、循环
5.1 while循环
1# while 条件: 2# 循环体 3# 改变变量 4 5i = 0 6while i<=20: 7 print(f"我要好好学习{i}") 8 i += 1 9 10# 计算1-100的和 11i = 1 12s = 0 13while i<=100: 14 s += i 15 i += 1 16print(f"0-100的和为{s}") 17
1 2i = 1 3s = 0 4while i<=100: 5 s += i 6 i += 1 7else: #当while条件不满足时执行 8 print(f"0-100的和为{s}") 9
5.2 while嵌套
1a = 1 2while a < 4: 3 print(a) 4 b = 1 5 while b < 5: 6 print("这是b值") 7 b += 1 8 a += 1 9
九九乘法表
1i = 1 2while i <= 9: 3 j = 1 4 while j <= i: 5 print(f"{i}*{j}={i*j}",end="\t") 6 j += 1 7 i += 1 8 print() 9 10 11 12
5.3 for循环
1# for 临时变量 in 可迭代对象: 2# 操作代码 3 4name = "zhangsan" 5for i in name: 6 print(i)
1# range(开始,结束,步长) 左闭右开 2 3for i in range(1,6): 4 print(i) 5 6s = 0 7for i in range(0,101): 8 s += i 9print("1-100的和",s) 10
5.3 break和continue
break :结束当前循环
continue: 直接进入下一轮循环
1 2i = 0 3while True: 4 print("hello") 5 if i > 4: 6 break 7 i += 1 8 9 10i = 0 11while i < 10: 12 print(i) 13 if i == 4 or i==5: 14 continue 15 i += 1 16 17
6、字符串、列表
6.1 字符串编码
ASCII 编码
GBK
UTF-8
编码: encode()
解码: decode()
1 2encode : 将其他编码的字符串转换为Unicode编码 3decode : 将unicode编码转换成其他编码的字符串 4 5a = 'hello' 6print(a) 7a1 = a.encode() #编码 8print(a1) 9print(type(a1)) #<class 'bytes'> 10 11 12a2 = a1.decode() #解码 13print(a2) 14print(type(a2))
1 2a = "你好啊" 3a_encode = a.encode() 4print(a_encode) 5
6.2 字符串常见操作
1find() # 查找字符是否包含在字符串中,找到返回开始的索引下标,找不到返回-1 2name = "互联网水太深互联网" 3name.find("互联网") 4name.find("互联网",3) #从下标3开始寻找 5name.find("你好") #没找到,返回-1 6 7 8index() # 跟find方法类似,不过没找到会抛出异常 9 10 11count() #计算字符串出现的次数 12print(name.count("互")) # 总共出现2次 13 14 15replace() #字符串的替换 16name = "在干嘛?吃了吗,吃了吧" 17name.replace("吃","睡") #把吃替换成睡 18name.replace("吃","睡",1) #只替换一次 19 20split() #字符串的分割 21name = "哈哈哈哈x哈哈哈哈x嘻嘻嘻xxx" 22name.split("x") #按照x进行切割 23name.split("x",2) # 只切割两刀 24 25
1name = "hello" 2 3# capitaliza() #第一个字母大写 4print(name.capitalize()) #Hello 5 6# startswith() 7print(name.startswith("he")) #判断是否以he开头 8 9# endswith() 10print(name.endswith("lo")) #判断是否以lo结尾 11 12# lower() 转换为小写 13print(name.lower()) 14 15# 转换为大写 16print(name.upper()) 17 18
6.3 列表的相关操作
1li = ['zs','ls','ww',2,3,4,5] 2print(type(li)) #<class 'list'> 3 4print(li[0]) 5print(li[-1]) #最后一个 6 7#切片操作也是可以的 8print(li[3:6]) 9print(li[1:4,2])
1# 添加元素 2# append 3# extend 4# insert 5li2 = [1,2,3,4,5] 6li2.append('10') #只添加一个元素 7li2.extend(['4','5','6']) # 添加一个list 8li2.insert(3,'11') # 在指定的位置插入元素11 9 10 11# 修改元素 12# 通过下标修改 13li2[2] = '你好' 14 15# 查找元素 16# in 如果存在返回True 17# not in 18# index 19# count 20li2 = ["张三","李四","王五"] 21print("张三" in li2) 22print("张三" not in li2) 23print(li2.index("李四")) #查找李四的下标,找不到报错 24print(li2.count("李四")) #李四出现的次数 25 26#删除元素 27# del 28# pop 29# remove 30li2 = [1,'b','c','d'] 31del li2[2] # 根据下标删除 32li2.pop() # 删除最后一个元素 33li2.pop(3) # 删除下标为3的元素 34li2.remove('c') # 根据元素的值进行删除 35 36# 排序 37# sort : 默认是从小到大 38# reverse 39li3 = [1,2,9,4,3] 40li3.reverse() # 对list中的元素逆序 41li3.sort() # 进行排序,升序 42li3.sort(reverse=True) #倒序排序 43 44li4 = sorted(li3,reverse=True) #倒序排序 45
6.4 列表推导式
1 2# [ 表达式 for 变量 in 列表] 3# [ 表达式 for 变量 in 列表 if 条件] 4 5 6l = [i for i in range(100)] #取1-100的所有数字 7l2 = [i for i in range(100) if i%2==0] #取偶数 8
6.5 列表嵌套
列表中包含列表
1 2li = [1,2,3,[4,5,6]] 3 4print(li[1]) 5 6print(li[3][0]) 7print(li[3][2]) 8
7、元组、字典、集合
7.1 元组
使用()进行定义
使用小括号进行定义
元组<font color="red">不可以修改元素</font>
1tu = (1,2,3) 2print(tu) 3print(type(tu)) 4
当写元组的时候,只有一个元素,<font color="red">末尾一定要加逗号</font>
1tu = (1) 2print(type(tu)) 3# <class 'int'> 4 5tu = (1,) 6print(type(tu)) 7# <class 'tuple'> 8
除了修改和删除,其他的操作与列表类似
1tu3 = ('a','b','c','d') 2print(tu3.index('b')) 3print(tu3.count('b')) 4
7.2 字典
1dic = {'name':"zhangsan",'age':18} 2# 键值对的形式 3print(dic) 4print(type(dict)) 5 6# key 对应 value 7# name 是键 、 "zhangsan"是值 8# key 是唯一的,当key相同时,就会被覆盖 9dic2 = {"name":"zhangsan", "name":"lisi"} 10print(dic2["name"]) # 得到 lisi
字典的基本操作
1dic = {"name":"zhangsan","age":18} 2 3# 查看元素 4# 变量名[key] 5# 变量名.get(key) 6print(dic["name"]) 7print(dic.get("name","不存在")) #如果没有key,返回不存在 8 9# 修改元素 10# 变量名[key] = vlaue 11dic["name"] = "李四" 12 13# 添加元素 14# 变量名[key] = value 15dic["job"] = "律师" 16 17 18# 删除数据 19# del 变量名[key] 20# 变量名.clear() 清空整个字典 21del dic["job"] #删除 22del d #删除整个字典 23dic.clear() #清空字典 24 25
字典的常见操作
1d2 = {"name","zhangsan","age":18} 2 3len() #键值对个数 4print(len(d2)) 5 6keys() #所有key的列表 7print(d2.keys()) 8 9 10values() #所有值的列表 11print(d2.values()) 12 13items() #包含 键、值的列表 14for key,value in d2.items(): 15 print(key,value) 16 17
7.3 集合
使用{}进行定义
集合是无序的,也是唯一的
集合是通过hash()来确定唯一性。 整数的hash()就是本身hash(3)=3,但是字符串的hash()每次都不一样
1s1 = {1,2,3} 2print(type(s1)) 3 4s1 = {1,2,4,3,5} 5print(type(s1)) 6 7s1 = {1,2,3,4,4,4,6} #重复的会删除 8print(s1) 9print(type(s1))
1# 添加元素 2# add 3# update 4s1 = {1,2,3,4} 5s1.add(8) #只能添加1个元素 6print("添加后的",s1) 7s1.update("678") #得到{1,2,3,4,'6','7'.'8'} 8 9 10# 删除元素 11# remove 12# pop 13# discard 14s2.remove('6') #删除指定元素,有则删除,无则报错 15s2.pop() #随即删除 16print("删除后",s2) 17s2.discard('6') #删除指定元素,有则删除,无则不操作 18 19 20# 交集 21# & 22s1 = {3,4,5} 23s2 = {5,6,7} 24print(s1 & s2) 25 26# 并集 27# | 28s1 = {3,4,5} 29s2 = {5,6,7} 30print(s1 | s2) 31
