1.环境搭建
1.1 安装运行环境python3.13
Welcome to Python.org
1.2 安装集成开发环境PyCharm
PyCharm: the Python IDE for data science and web development
1.3 创建项目 && 设置字体
2.基础语法
2.1 常量与表达式
- 在python中整数除整数不会优化,所以结果可能是小数
2.2 变量
在Python中定义一个变量,直接写变量名就行
- 变量必须由数字 字符 下划线,不能包含特殊符号
- 数字不能开头
- 变量名不能和Python中的关键字重复
- Python中变量名,是区分大小写的,大小写敏感的
- 第一个给值叫初始化,第二次给值叫赋值
Python中的变量类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化值的类型来确定
在Python中,int能够表示的数据范围是"无穷"的,因为int可以根据要表示的数据大小,自动扩容
在Python中,True是真,False是假,第一个首字符要大小
- int类型,默认4字节,动态扩容
- float,8字节,
- bool,1字节’
- str,变长的
动态类型:程序运行过程中,变量的类型可能会发生改变~
- Python作为一个动态类型的语言,在定义变量是,也是可以声明类型的a:int,但没什么用
2.3 注释
2.4 输出-格式化字符串
print( f“{变量}” )
-
注意:字符串不能跟数字拼接
2.5 输入-input
- 注意:input函数的返回值是str的,可以使用强制类型转换int(),float(),
2.6 运算符
算术 关系 逻辑
- 特殊的算术运算符:** //,一个平方或开方,另一个是向下取整(除法)
- 注意:关系运算符之间的比较 返回值是bool
- 特殊案例,2浮点数之间的比较不能使用==,而是需要做差
- 注意:python中支持连续比较
- and 等价于 &&
- or 等价于 ||
- not 等价于 !
- 在Python中额外的2种赋值,链式赋值 和 多元赋值
- 在Python中不支持++--这样的自增自减操作,
- ++a之所以没有语法报错,是Python解释器把+但成正号
- 同理--a也不会报错,是因为把-当成了负号,负负得正,最终的值依然不变
- 但是后置++和后置--都是语法上报错的
在Python中,还有其他运算符:身份运算符(is,is not),成员运算符(in,not in),位运算符(& | !~^<<)等
2.7 if条件语句
- 记得加:号
- 注意: 代码缩进
2.7 空语句
空语句pass表占位
- 这里如果没有pass空语句,就会报错
2.8 while循环
- 记得加:号
2.9 for循环
- shift+F6:对需要重命名的变量重命名
- range(起始,终止,步长),且range函数的区间是前闭后开的,
2.10 break和continue
2.11 def定义函数
- 在python中有个特殊用法,相较于其他语言,函数可以返回多个返回值
- 如果这多个返回值,不一定都需要,就可以使用_进行占位
- 在python中,找变量的方法和其他语言也一样,优先从局部作用域找,没有的话,从全局找
- 但是python中可以用global 关键字声明变量,使其成为全局变量
- 与其他语言不同的是,在python只有函数和类才会影响作用域
- 和其它语言一样,也能给形参赋默认值,
- 上面的函数也是一个调试小技巧
- python特有的:关键字参数
2.12 列表[]
列表可变,元组不可变
- 在python中列表是可以放不同类型的
- 在python中可以使用列表下标可以用负数,-1表示倒数第一个数
切片操作
- 列表的切片操作是不涉及数据拷贝的,且支持负数,也有步长
遍历操作
- 注意2种遍历,一种能赋值,另一种不能赋值
插入操作
- 一个是append方法,另一个是insert方法
查找 && 删除
拼接
- 建议使用extend方法
2.13 元组()
- 其他同列表,但不支持修改,
2.14 字典{}
存放键值对 ,字典的各种操作都是针对key的
访问,查找
- 无论是列表还是字典都建议使用[ ]
插入,删除
- 字典的[]赋值,存在替换,不存在插入,
遍历
- 常见的三个方法:keys(),values(),items()
2.15 文件操作
# 写文件操作
f = open("1.txt","w")
f.write("早上好\n")
f.write("中午好\n")
f.write("下午好\n")
f.close()
# 读文件操作
# f = open("1.txt",'r',encoding="utf-8")
# 读取2个字符
f = open("1.txt",'r')
result = f.read(2)
print(result)
f.close()
# 按行读取
f = open("1.txt",'r')
for line in f:
print(f"line = {line}",end=" ")
f.close()
# 读取所有数据
f = open("1.txt",'r')
lines = f.readlines()
print(lines)
f.close()
- 关键字参数:encoding = "utf-8"指定参数,end=" "指定最后结尾字符
2.16 上下文管理器 with as
解决打开文件,却忘记关闭的情况
3.认识标准库
Python 标准库 — Python 3.13.0 文档
引入第三方库: import [模块名]
使用 import 可以导入标准库的一个 模块
所谓 "模块" , 其实就是一个单独的 .py 文件.
使用 import 语句可以把这个外部的 .py 文件导入到当前 .py 文件中, 并执行其中的代码.
案例:计算两个日期之间差了多少天 - datetime
import datetime as dt
date1 = dt.datetime(year=2012, month=2, day=14)
date2 = dt.datetime(year=2016, month=2, day=3)
print(date2 - date1)
-
使用 import 语句导入标准库的 datetime 模块
案例:翻转单词顺序 - reverseWord
def reverseWords(s: str):
tokens = s.split()
tokens.reverse()
return ' '.join(tokens)
print(reverseWords("I am a student."))
- 使用 str 的 split 方法进行字符串切分, 指定 空格 为分隔符. 返回结果是一个列表.
- 使用列表的 reverse 方法进行逆序.
- 使用 str 的 join 方法进行字符串拼接. 把列表中的内容进行合并.
案例:旋转字符串 - rotateString
def rotateString(s, goal):
if len(s) != len(goal):
return False
return goal in (s + s)
print(rotateString("abcde", "edcba"))
- 使用 len 求字符串的长度. 如果长度不相同, 则一定不能旋转得到.
- 将 s 和 自己 进行拼接, 然后直接使用 in 方法来判定 goal 是否是 s + s 的子串
案例:统计给定字符串前缀的字符串数目 - countPrefixes
def countPrefixes(words: list, s: str):
count = 0
for word in words:
if s.startswith(word):
# s 是以 word 开头
count += 1
return count
print(countPrefixes(['a', 'b', 'c', 'ab', 'bc', 'abc'], 'abc'))
print(countPrefixes(['a', 'a'], 'aa'))
- 依次遍历 words 中的字符串
- 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀
案例:文件查找工具 - os
-
输入要查找的路径, 输入要搜索的文件名(一部分)
-
自动的在指定的路径中进行查找~
import os
inputPath = input('请输入要搜索的路径:')
pattern = input('请输入要搜索的关键词:')
for dirpath, _, filenames in os.walk(inputPath):
for f in filenames:
if pattern in f:
print(f'{dirpath}/{f}')
-
使用 os.walk 即可实现目录的递归遍历.
-
os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件名 (多个)