python基本语法整理:
笔记
1.不需要semicolon(分号);
2.indentation(缩进)代替{};
3.变量不需要声明 declare type(数据类型),可以直接赋值。
1.不需要格式符号%d,%f…
2.字符串可以用 一对单引号或者一队双引号标注。(符合都是英文输入法下输入)
3.每次print执行完之后,都会默认换行。
print("hello worid",end='')#end=规定打印结束用什么来结尾
print('ho')
4.一个print函数打印多个字符串
print(a, b, c)
#默认字符串用空格隔开
print("hello" * 3)
#打印“”里面的内容3次
print("hello"+"world")#把两个字符串加起来
5.打印特殊符号
print("hello\\")#打印字符串里面的' " \n \t 或者位于句末的 \ 时(转义字符)
结果:hello\
string = r'\n\t'#加上 r 会自动给字符串所有 \(不包括句末的)转义
print(string)
结果:\n\t
6.打印多行字符串,使用三个单引号或者三个双引号
print('''hello
world''')#打印结果会自动换行
结果:hello
world
if else:注意冒号与缩进
if a == 1:
print(' a == 1')
elif a == 2:
print(' a == 2')
else:
pass #什么都不写的时候用
1.三元操做
s = a if a < b else b#如果a<b,则s=a,否则s=b
2.其它用法
写在else里面的代码只有循环结束之后才会运行,中间有break,会直接退出,不运行else后面的代码。
for i in l:#表示一个循环 i在l里面循环
if i == 1:
break
else:
print("l列表的长度为2")
else也可以和try语句一起使用,如果try语句没有抛出异常(exception),则运行else里面的语句。
try:
raise OSError
exception OSError:
print('Error')
else:
print('NO error')
运算符
1.逻辑运算符
&& 和
|| 或者
! 非
2.算术运算符
#/ :数学意义上的除法
#//:为下限除法,操作数为小数,结果依然为整数
3.比较符 < > 等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUKv9Vaj-1593847072144)(D:\python\python\python资源\老师ppt\图解\Python的表达式.png)]
数据类型
1.序列(sequence):列表、元组、字典
有序可变序列:列表list
#1.创建:
list = []#创建空列表
list1 = [1,2,3,4,5,6]#从0开始有序
#2.修改:list[index] = 修改值
list1[0] = 2
#3.添加元素 append(element) extend(list) insert(index,element)
list1.append(3)#追加一个元素3,列表最后位置,一次只能追加一个
list1.extend([0,2,4])#相当于list3 = list1 + [0,2,4]
list1.insert(0,'hello')#将一个元素放到指定的位置
#4.删除元素:remove(elemt) pop(index)
list1.remove(0)#删除元素0
list1.pop(3)#删除在index(序号或者索引在3这个位置的元素,并返回这个元素)
#5.切片(slice) [start:stop:step]
list5 =list1[1:3]#截取index从1到3不包含3的元素
list6 = list1[1:9:3]#截取index从1 到9 不包含9的元素,步长为3
list7 = list1[:]#copy
#6.比较
list1 == list2#只有所有元素相同时才为true
list1<list2#比较第一个不相同的元素
#7.检查是否有一个元素
if "hello" in list1:
print('yes')
#8.计数给定元素出现次数
list1.count(1)
#9.一个元素第一次出现的index
list1.index('hello',3,7)#返回hello这个元素在[3,7)内第一次出现的位置
#10.倒序
list1.reverse()
#11.排序
list1.sort()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YI1k1Qur-1593847072148)(D:\python\python\python资源\老师ppt\图解\Python的列表.png)]
有序不可变序列:元组tuple
#空元组
tuple = ()
tuple1 = (0,1,2,4)
tuple2 = (1,)#必须加逗号
tuple3 = tuple3*2
tuple4 = tuple[:2] + ('hello',) + tuple3
####元组的值不能修改 添加只能赋值如tuple4 排序用sorted 查找用index(index) 取元素 tuple4[3]
## 元组去重 变成集合
set(tuple1)
##解包
a,b,c = tuple1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdZCiqzH-1593847072151)(D:\python\python\python资源\老师ppt\图解\Python的元组.png)]
无序可变序列:字典dict
#创建 key是唯一的 操作key来操作dict 通过输入key,来获取,或者重新赋值,相对应的某个value。
#可以使用in 和not in,但是查找的是key,不是value。
d = {}#空字典
dict = {'key':value}
dict1 = {'apple' : '🍎', 'banana' : '🍌', a : b, 1 : 2}
#或者
dict1 = dict( ( ('apple', '🍎'), ('banana', '🍌'), (a, b), (1 , 2) ) )
print(dict1['apple'])
print(dict1[a])
print(dict1[1])
dict1['apple'] = 苹果 #重新赋值
#如果apple这个key不存在,python会自动创建一个item
###fromkeys(),创建一个新的dict。可以用在如果在这个字典里所有keys都对应同样的value时。
###keys(), 返回dict里面的所有keys。一般用在for里面。类似的还有values(), items()
###get(),可以自定义,当access一个不存在的key时,返回的值。
###clear(),清空一个字典。彻底清除这一个指针(e.g. dict1)所指向的数据。
###pop(key),返回,输入的key所对应的value,并且删除整个item
###popitem(), 随机删除并返回一个item
###setdefault(key, value) 在这个字典里添加一个item
###update(dict),用一个字典来更新另外一个。(只更新两个字典中都有的key,所对应的value)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJWNP6Sk-1593847072155)(D:\python\python\python资源\老师ppt\图解\Python的字典.png)]
2.集合set
#集合是无序 不支持index索引 可以增删元素 支持in, not in,集合元素不重复
set = {}#空集合不能这样定义 字典能这样定义
s = set([])#空集合
set1 = {1, 3, 4, 2, 5, 4} #没有映射关系
#或者
set1 = set([1, 3, 4, 2, 5, 4])
#set()可以接收list, tuple, string
print(set1)
#创建一个不能修改的函数 frozenset
s2 = forzenset(0,1,3,4,2,5)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e8fn9HH1-1593847072160)(D:\python\python\python资源\老师ppt\图解\Python的集合.png)]
3.字符串
字符串可以做的事情,查找时顺序(左到右 :0开始,第一个位置),逆序(右到左:-1开始,最后一个位置)
- 改变大小写
- 居中,左对齐,右对齐 字符串
- 判断字符串是否以sub string结束/开始
- 判断字符串里有无数字,字母,大小写,title(首字母大写)
- 用指定的字符串,分隔当前字符串
- 去掉/替换 字符串中指定的sub string
格式化字符串:按照规定的格式输出字符串format
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLA8vN4I-1593847072161)(D:\python\python\python资源\老师ppt\图解\Python的数据输入与输出.png)]
文件操作
简单叙述可能的操作:
.close() 关闭文件
要及时关闭文件,否则写入的内容会停留在缓冲区,并没有真正的存入文件里面
.read() 按照字符个数读取,返回文件内容。默认读取全部内容。
.readline() 按照行数读取
.tell() 返回文件指针的位置 in bytes!
.seek ()移动文件指针
.list() 可以直接将文件的内容变成一个list
在for里面,甚至可以直接将文件当作一个sequence使用:
#假设有个文本文件file 已经打开
for line in file:
print(line)
#.write() 写入字符串
#.writeline() 写入字符串sequence
从文件中写入,读取的数据都是字符串。如果要写入/读取的数据类型不是字符串,可以通过int, float等来转换,或者如果数据类型不容易转换的话,可以使用pickle模块(见模块)。
with语句:使用with语句就不用自己来关闭文件
with open('file name','打开方式') as 变量名:
执行文件操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPF6FQmp-1593847072162)(D:\python\python\python资源\老师ppt\图解\Python的文件.png)]
函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cimqhaxj-1593847072164)(D:\python\python\python资源\老师ppt\图解\Python的系统函数.png)]
模块
通过import模块,可以使用里面已经定义的函数和变量。
import random
random_num = random.randint(0, 10)
#或者
import random as r
random_num = r.randint(0, 10)
from random import * #执行这个操作,可以直接使用里面的所有变量/函数,不需要加上random.randint,可以直接使用randint
from random import randint #可以直接使用randint
为了使代码更加的简洁,也可以将一些数据(列表,字典)保存到一个单独的文件,方便调用。
OS 操作系统
使用这个模块,可以进行重命名文件,删除创建文件及目录等操作
pickle
方便不是字符串的数据,以二进制的方式,读取/写入到文件。
#写入数据
import pickle
student_file = open('student.pkl', 'wb')
#以二进制的方式打开,文件后缀写成pkl方便理解
pickle.dump(list1, student_file)
student_file.close()
#读取数据
import pickle
student_file = open('student.pkl', 'rb')
list2 = pickle.load(student_file)
student_file.close()
异常 exception
命名规则:ExceptionName
程序可能会出现很多种异常 (e.g. ValueError, OSError),针对异常作出相应的反应,就会用到try语句
try语句
如果出现了指定的异常,不会显示原有的traceback语句,而是只会执行except的代码
try:
要执行的代码
except 指定的异常 [as 变量]: #这个变量用来存放出错的具体原因
如果出现指定的异常,需要执行的代码
[finally:
不管出不出现异常,都必须执行的代码。
(一旦出现异常,程序会自动调到对应的except语句中,try里面的一些代码可能不会被执行)
try:
with open('test.txt', 'r') as file1:
str1 = file1.read(5)
except OSError as reason:
print('文件出错,具体原因为:' + str(reason))
finally:
print('exiting...')
自己创造一个异常:
raise exception [( ‘注释’ ) ]
raise OSError('要读取的文件不在!')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TxrXWdtZ-1593847072165)(D:\python\python\python资源\老师ppt\图解\Python的异常处理.png)]
类 class
命名规则:ClassName
类包含一系列的变量和函数
避免变量与函数重名,否则变量会覆盖函数。
class Car():#如果在定义的时候,把其他的类当作参数放进来,那么可以继承这个类的所有变量或者函数
#变量
name = 'carro'
color = 'red'
#函数
def calculate_speed(self, distance, time):
speed = distance / time
print('%s is travelling at %f m/s' % (self.name, speed))
# 除了在定义变量的部分,使用变量的话,都需要明确是哪一个对象(e.g. self.name而不是name)
类理解为一个模版,对象object则是这个模版刻出来的一个物品。
名规则:ClassName
类包含一系列的变量和函数
避免变量与函数重名,否则变量会覆盖函数。
class Car():#如果在定义的时候,把其他的类当作参数放进来,那么可以继承这个类的所有变量或者函数
#变量
name = 'carro'
color = 'red'
#函数
def calculate_speed(self, distance, time):
speed = distance / time
print('%s is travelling at %f m/s' % (self.name, speed))
# 除了在定义变量的部分,使用变量的话,都需要明确是哪一个对象(e.g. self.name而不是name)
类理解为一个模版,对象object则是这个模版刻出来的一个物品。