从0到1 Python基础
文章目录
语法基础
-
变量:一个可以改变的量
(1) 变量的命名规则:变量由字母、数字与下划线组成;第一个字母必须是下划线或者字母;不能是关键字
(2)变量的声明:所有的变量都不需要声明,因为python会自动识别数据的类型
语法:变量名 = 值
声明就是指出变量的数据类型并根据数据类型分配空间给变量
-
常量:一个不改变值的量,其实也是变量一般用大写字母组成的名称表示
-
查阅python的关键字
python
import keyword
print(keyword.kwlist)
-
数据类型
- 数字
- 整数型
- 浮点型
- 复数complex(a,b)
- 布尔型(只有True和False)
- 字符串
- 列表
- 元组
- 字典
- 集合
使用type()判断变量是什么类型
- 数字
-
运算符
-
算数运算符
优先级:乘、除 > 加、减 ; 取余与乘除优先级相同 。
-
逻辑运算符
与 and
或 or
非 not
-
身份运算符:判断两个变量的引用对象是否是同一个
== 用于判断两个变量的值是否相同
a. is
b. not is
-
成员运算符:判断某个值是否存在于序列当中(列表、元组、字符串)
a. in
b. not in
-
-
类型转换
-
数字 -> 字符串 str(数字)
-
字符串->数字
int(字符串) #字符串中只有数字
float(字符串)
-
整数yu浮点数
int(浮点数) #只保留了整数部分
float(整数)
-
-
print
语法:print(变量1,变量2,变量3,····)
print(值列表,sep = "分隔符",end = "结束符",file = "文件对象")
sep 默认为空格
end 默认为"\n"
file 用于指定将内容输出到哪个文件当中
pythonfile = open("D:\\hello.txt",'w',encoding="utf-8") print("从0到1快速上手",file = file)
-
input
语法:a = input()
通过input()从键盘中读取内容赋值给变量,但input()读取的内容永远是字符串
赋值
python的多重赋值:可以同时为多个变量赋值
-
基本用法
pythona,b = 1,2
-
交换变量的值
pythonx,y = y,x
-
同时为多个变量赋值
pythona,b,c = 1,2,3
-
从序列中赋值
python#列表中的元素赋值 a,b,c = [1,2,3] #解构元组给变量赋值 first_name,second_name = ("Jenny","Danny") #结构字符串给变量赋值 first_char,second_char = "HE"
-
与函数返回值结合使用
pythondef get_min_max(numbers): return min(numbers), max(numbers) min_val, max_val = get_min_max([1, 2, 3, 4, 5])
python函数可以同时返回多个值
-
注意事项
- 多重赋值要求右侧表达式的长度与左侧变量的数量相匹配。
- 如果数量不匹配,Python会抛出
ValueError
。
-
结构流程控制
-
if···elif···else
-
while/ do···while
-
for
for i in range(n) #从0到n-1
range(start,end,step) #[start,end)
列表与元组
-
introduce 列表
列表可以存储一组数据,且列表中的元素可以不同数据类型,且列表元素可以是一个列表。
这也是列表与数组的不同,数组要求元素是同一数据类型。
列表是python内置的数据类型,若要创建数组需要使用numpy模块
-
创建列表
语法:列表名 = [元素1,元素2,元素3,···]
python#创建一个空表 list1 = [] #创建一个包含3个元素的列表 list2 = ["red","green","gray"] #列表元素可以是不同数据类型 list3 = ["red",1,True,2] #列表元素还可以是列表 list4 = [[1,2],[3,4],[5,6]]
-
基本操作
-
获取元素:通过下标
-
修改元素:列表名[i] = 新值
对列表来说,不能使用下标的方式给不存在的元素赋值,否则程序报错
python#将一个二维列表的行和列元素进行互换,然后存到另一个二维列表中,最后输出结果 """ a = [[1,2,3],[4,5,6]] -> b = [[1,2],[3,4],[5,6]] #错误代码 a = [[1,2,3],[4,5,6]] b = [] for i in range(len(a)): for j in range(len(a[i])): print(a[i][j]) print(b) """ a = [[1, 2, 3], [4, 5, 6]] b = [] # 用于存储转置后的矩阵 # 假设a是一个非空的二维列表,且所有子列表长度相同 for i in range(len(a[0])): # 遍历列数,即a[0]的长度 b.append([]) # 为b的每列创建一个空列表 # 转置矩阵 for i in range(len(a)): # 遍历行 for j in range(len(b)): # 遍历列 b[j].append(a[i][j]) # 交换行和列的元素 print(b)
-
增加元素
pythoninsert(下标,值) #在列表任意位置插入元素 append(新元素) #在列表末尾插入新元素
-
删除元素
python#根据下标删除某一个元素 del 列表名[i] #删除某一个元素,默认删除末尾元素 列表名.pop(i) #根据值删除某一个元素 列表名.remove("值")
-
-
获取列表长度:len(列表名)
-
获取元素个数:列表名.count(元素)
-
获取元素下标
语法:列表名.index(元素)
只返回第一次出现时的下标,如果没有找到那么就报错,因此使用起来有一定风险
-
合并列表
- 语法:A.extend(B)
将B列表合并到A列表中并且A列表已经被改变
- C = A + B
将A、B列表合成一个新的列表,并且A、B列表均未被改变
-
清空列表
列表名.clear()
-
切片
- 列表名[m:n] #截取范围[m,n)
- 列表名[m:] #截取范围为m到结尾位置
- 列表名[:n] #截取范围为开始到n-1
- 列表名[:] #截取整个列表
-
遍历列表
-
for item in 列表名
-
enumerate()函数:可以在遍历列表的同时获得元素的下标
语法:for index, item in enumerate(列表名)
-
-
检索列表:用来判断值是否在列表中
item in 列表名
item not in 列表名
-
颠倒顺序:列表名.reverse()
-
大小排序
语法:列表名.sort(reverse = True或False)
reverse为True则为降序排列,为False则为升序排列
-
数值计算
max(列表)
min(列表)
sum(列表)
-
列表与字符串的互转
- 列表转换为字符串: "连接符".join(列表名)
- 字符串转换为列表:列表名 = string.split("分隔符")
-
列表运算
列表只有乘法和加法
python[1,2]*3 -> [1,2,1,2,1,2] ["红","橙","黄"]+[1,2,3] = ["红","橙","黄",1,2,3]
-
二维列表
-
元组
元组是不能被改变的数据类型
元组的创建:tuple = (元素1,元素2,元素3,·····)
-
实战题
-
输入任意5个整数到一个列表中,然后求出该列表中的最大值,并输出这个最大值。
pythonnums = [] for i in range(5): nums.append(int(input())) temp = 0 for index,item in enumerate(nums): if index == 0: temp = item elif item > temp: temp = item
-
输出星期数,输入一个数字(1~7),然后输出对应的星期数。
pythonweekdays = ["Friday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] i = int(input()) print(weekdays[i-1])
-
字符串
-
多行字符串
-
原始字符串
在字符串前面加上r或者R,表示这是一个原始字符串
pythonprint("C:\northwest\northwind") """ C: orthwest orthwind """ print(r"C:\northwest\northwind) # C:\northwest\northwind
-
获取某一个字符:字符串名[n]
-
获取字符串长度:len(字符串)
-
统计字符的个数:count()
语法:字符串名.count(字符)
-
获取字符下标:index()
字符串名.index(子字符串)
找不到报错
-
截取字符串:字符串名[m:n]
-
替换字符串
语法:字符串名.replace(old,new,n)
old表示原字符,new表示替换字符
n是可选参数,表示替换次数不超过n
-
分割字符串
语法:字符串名.split("分隔符")
默认为空格,且空格次数不限
-
去除首位符号:strip()
语法:字符串名.strip(指定字符) #去除字符串首尾指定的字符,默认空格
lstrip() 去除左边的
rstrip() 去除右边的
-
大小写转换
- 大写转小写 :字符串名.lower()
- 小写转大写 :字符串名.upper()
- 大写转小写,小写转大写:字符串名.swapcase()
-
检索字符串:判断一个字符串中是否包含另一个字符串
-
A.find(B)
判断A是否包含B
A.find(B,start,end) #start表示开始下标,end表示结束下标,全都省略表示检索整个字符串
-
A.startwith(B)
判断A是否以B开头
A.startwith(B,start,end)
-
A.endwith(B)
判断A是否以B结尾
A.endwith(B,start,end)
-
-
拼接字符串
-
"+"来实现
-
%s
可以使用"%s"来实现字符串的拼接,也就是字符串的格式化
pythonprint("绿叶学习网成立于%s年"%2015)
-
字符串.format()
pythonprint("{0}成立于{1}年".format("绿叶学习网",2015))
-
-
类型转换
- 将"元组"或"字符串"转换为一个列表:list()
- 将"列表"或"字符串"转换为一个元组:tuple()
-
实战演练
python#统计单词个数 string = "As we know,rome was not built in a day" count = 0 for i in string: if i == ' ' or i == ',': count += 1 print(count+1) #将首字母转换为大写 string = "a friend in need is a friend indeed" strs = string.split() for index,item in enumerate(strs): strs[index] = item[0].upper()+item[1:] print(" ".join(strs)) #方法二 string = "a friend in need is a friend indeed" result = "" for i in len(string): if i == 0: result += string[i].upper() else: if string[i-1] == ' ': result += string[i].upper() else: result += string[i]
字典与集合
-
字典的创建
语法:字典名 = {键1:值1,键2:值2,·····}
-
基本操作
-
获取某个键的值
语法:dict.get(key) dict[key]
-
修改某个键的值
语法:dict[key] = value
-
增加键值对
语法:dict[key] = value
-
删除键值对
语法:del dict[key] = value
-
-
获取长度:len(dict)
-
清空字典:dict.clear()
-
复制字典:dict.copy()
-
检索字典
语法:用来判断某个键是否"存在"与字典中
key in dict
key not in dict
-
获取键或值
下面三个方法返回的是迭代器对象。
迭代器对象有两个特性:
- 可以使用list()函数转换成列表
- 可以直接使用for···in···,循环对其遍历
- 字典.keys():获取所有的键
- 字典.values():获取所有的值
- 字典.items():获取所有的键和值
-
集合操作
- 交集 {} & {}
- 并集 {} | {}
- 差集 {} - {}
-
实战题
初始函数
数学计算
-
求绝对值:abs()
-
四舍五入:
语法:round(x,n)
- 参数x是一个数,n表示保留几位小数
- 若省略n则保留整数部分
-
取整运算
- 向上取整 ceil()
- 向下取整 floor()
-
平方根运算 sqrt()
-
圆周率 math.pi
度数表示:度数*math.pi/180
-
生成随机数
-
随机整数
语法:random.randint(x,y)
生成随机整数n∈[x,y]
random.randrange(x,y,step)
表示生成随机整数的范围n∈[x,y) step表示每次循环后变量增加的额值
-
随机浮点数
语法:random.random() 生成0~1的随机整数
random.uniform(x,y) 生成n∈[x,y)的随机整数
-
随机序列
语法:random.choice(seq)
seq:列表、元组或字符串
从序列中随机获取一个元素
random.sample(seq,n)
从序列中随机获取n个元素组成的一个列表
每个元素的值不同
random.shuffle(list)
表示将一个列表的元素顺序打乱
-
日期时间
-
time模块
time.方法名()
-
获取时间
time() 获取时间戳
localtime(时间戳) 将时间戳转换为本地时间,返回的是struct_time元组
strftime(格式化字符串,本地时间) 将本地时间格式化为指定格式
-
格式化时间
time.strftime(format,tuple)
符号 说明 %Y 年 %m 月 %d 日 %H 小时 %M 分钟 %s 秒 %a 简写星期 %A 完整星期 pythonimport time local = time.localtime(time.time()) #local是一个struct_time元组 year = time.strftime("%Y",local) month = time.strftime("%m",local)
- struct_time元组的属性
-
属性 | 说明 |
---|---|
tm_year | 年 |
tm_mon | 月 |
tm_mday | 日 |
tm_hour | 时 |
tm_min | 分 |
tm_sec | 秒 |
tm_wday | 星期 |
tm_yday | 一年第几天 |
tm_isdst | 夏令时 |
-
datetime模块
-
获取日期时间
语法:datetime.datetime.方法名()
第一个datetime是模块名,第二个datetime是模块中的类
result = datetime.datetime.now() #获取完整的日期时间
date = result.date() #获取日期
time = result.time() #获取时间
#格式化时间
year = result.strftime("%Y")
-
设置日期时间
语法:datetime.datetime(year,month,day,hour,minute,second)
year、month、day是必选参数
hour、minute、second是可选参数
-