python 白月黑羽学习笔记
1.
d:\>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> python my.py
File "<stdin>", line 1
python my.py
^
SyntaxError: invalid syntax
>>>
python :进入这个环境了,已经进入了python交换界面,只能执行python代码
python my.py 是一个命令,是给命令框的命令
要使用exit()退出交互模式
2.对象及数字对象
3.变量与注释
在python中变量名是大小写敏感的
不可以在定义的时候使用startTime作为变量名,应该使用starttime
#:注释
4.字符串
字符串必须用引号 eg:s='abdkjs'
单、双、单三、双三引号都可以
sport='football' 如果是字符串,要记得有引号
除了从第一个字符开始的以0为下标的,也可以用负数表示,最后一个下标为-1
字符串切片
获取字符串长度
内置函数len
var = '特朗普总统'
lenth = len(var)
print(lenth)
5.初学函数
def interview(interviewee):
print("求职者是 " + interviewee)
print("把求职者带到3号会议室")
print("请求职者 完成答卷")
print("让测试经理来面试 求职者")
print("让技术总监面试 求职者")
interview('王小五')
def interview(),括号里面是函数的参数,需要就写,不需要可不写
什么是函数返回值
return :一旦函数进行到return那么这个函数就立马返回,后面的东西都不会继续运行了
return 只能在函数中进行
核心原则
- 需要返回:当函数的核心目的是为调用者提供数据时(比如计算函数,布尔函数等
- 无需返回:当函数主要执行副作用操作(如打印、修改全局变量、写入文件)时
缺省值
函数在调用的时候。如何还是原来的数值可以不写,如果数值变了就只直接写上
函数局部变量和全局变量
函数内部,局部变量和全局变量同名,使用局部变量
6.让用户输入信息
input 函数,input函数里面的参数是字符串(如果是要使用数字之类的一定要记得转化为整数型或者浮点数),含义:让用户数如之前,显示在屏幕上的提示信息
如果input函数输入为数字,但是在函数中这个依然是字符串,想要输出数字要进行转换
7.列表、元组(都有 序列 特性)
列表:
namelist = [ ]
方括号用来表示一个列表,中间的元素可以用 , 来隔开
内容是可以变化的
元组:
性质与列表非常相似,可以存放任何类型的数据对象,但是元组内容不可以改变(但是元组列表的内容可以改变)
namelist=( ) ()圆括号用来表示一个元组,用逗号隔开
定义元组也可以去掉圆括号
8.判断语句
and和or一起使用,先计算and部分
~else条件说完 要加:
~else条件说完,后面要缩进执行下面的代码
~if else elif (elif只有一个)
9.对象的方法
对象的方法:对象所拥有的函数
调用对象的方法:在前面加上所属对象和一个点
eg: var1.reverse( )
9.1字符串的方法
count()
主要用于统计某个元素在序列(如字符串、列表、元组等)中出现的次数
s = "ababaab"
# 统计 "ab" 出现的次数
print(s.count("ab")) # 输出:3(位置 0-1、2-3、4-5)
# 从索引 2 开始统计
print(s.count("ab", 2)) # 输出:2(位置 2-3、4-5)
find()
用于查找子字符串在原字符串中首次出现的索引位置
s.find (' 要找的东西 ‘ ,’从哪个地方开始找 ‘,’从哪个地方结束‘)
示例:nums="1,0002,3,4"
result=nums.find('0')
s = "hello world, hello python"
# 查找"hello"首次出现的位置
print(s.find("hello")) # 输出:0
# 从索引 5 开始查找"hello"
print(s.find("hello", 5)) # 输出:13(第二个"hello"的起始位置)
# 查找不存在的子字符串
print(s.find("java")) # 输出:-1
# 限定查找范围(start=0, end=10)
print(s.find("world", 0, 10)) # 输出:6(在指定范围内找到)
找不到就返回-1
split( )
用来从字符串中截取我们想要的信息
注:分隔符本身在切割后,就会被丢弃掉,因此切割后的字符串中不会有分隔符
示例 nums="1,0002,3,4"
result=nums.split(',')
上面示例注意: nums必须要是字符串才可以使用split
splitlines()
用于按照字符串按换行符分割成列表,返回一个包含各行内容的列表。
join()
将列表中的字符串元素 以某字符串为连接符, 连接 为一个字符串
join()
方法要求可迭代对象中的所有元素必须是字符串类型(str)
示例 nums=('1','0002','3','4')
result='-'.join(nums)
注意上面示例: nums是一个元组,但是元组里面都是字符串,然后利用join函数将其拼接为一个字符串,因为nums里面的元素都是字符串,使用可以使用join函数
strip、lstrip、rstrip
删除空格
replace
替换
('字符串中要替换的','替换成的')
isdigit
判断字符串是否都是数字构成
字符串的倒序
9.2列表的方法
append
在列表后面添加一个元素,返回值为None
insert
在指定位置插入一个元素,返回值为None
示例: a.insert(2,'hello')
2:插入到列表第三个位置
‘hello’:插入元素,记得要带上‘ ’
pop
从列表中取出并删除,返回值为提取出来的元素
该方式的参数是取出该元素的引索
reverse
将列表元素倒过来,返回值为None
示例 var1 = [1,2,3,4,5,6,7]
var1.reverse()
print(var1)
index
返回参数对象在列表的位置,也就是索引
示例
var1 = [1,2,3,4,5,6,7]
idx = var1.index(5)
print(idx)
idx为4
sort
对于列表中的元素进行原地排序,直接修改列表,不会创建显得列表
10.格式化字符串
使用%s作占位符,后面跟元组传入需要填充的数据
salary = "10000"
tax = 2500
aftertax = 7500
print('税前薪资:%s元,缴税:%s元,税后薪资:%s元' % (salary, tax, aftertax))
%d:整数 %f:浮点数
格式控制
1)指定宽度:%10s(宽度10,右对齐) %-10s(宽度10,左对齐)
2)补零:%010d(整数不足10位补0)
3)小数位数:%.2f (保留2位小数)
f-string格式化
11.循环
有两种循环结构:while和for循环
11.1 while循环
当条件为true时,反复执行此代码,知道条件位false
当条件一直为true时,会陷入死循环
while i<=5 :
print(i)
i+=1
11.2 for循环
用于遍历每一个可迭代的对象,依次取出每个元素处理
students=['a','e','d','s']
for student in students:
print(student) #一次打印每个学生
循环指定次数(range类)
range(n)
:生成 0 到 n-1 的序列,循环 n 次。range(start, end)
:生成从 start 到 end-1 的序列。range(start, end, step)
:指定步长(每次增加的值)。
11.3 循环控制语句
break:终止整个循环,跳出循环体
continue:跳过当前循环的剩余代码,直接进入下一次循环
break和continue的区别
break:仅跳出循环,适用于任何循环中
return:仅用于函数,直接结束函数并返回,不再执行后续代码
# 生成原列表中元素的平方组成的新列表
numbers = [1, 2, 3, 4]
squares = [n**2 for n in numbers] # 结果:[1, 4, 9, 16]
13.文件读写
通过内置函数open()打开文件,获取文件对象,使用其他方式读写内容,最终关闭文件
文本模式
-
特点:读写内容为字符串,自动处理编解码。
-
open()
关键参数:file
:文件路径(相对或绝对路径)。mode
:打开模式(决定操作权限):r
:只读(默认),文件不存在则报错。w
:只写,覆盖原有内容(文件不存在则创建)。a
:追加,在文件末尾添加内容。
encoding
:指定编解码方式(如utf-8
、gbk
),建议显式设置。
二进制(字节)模式
-
特点:读写内容为字节串(
bytes
),需手动编解码,适用于非文本文件(图片、视频等)。 -
mode
参数:rb
(读)、wb
(写)、ab
(追加)。 -
注意:mode参数为'w',表示要覆盖写文件。 这就意味着,如果原来文件中有内容, 该模式打开文件后,文件中所有的内容都会被 !!!删除掉!!
with语句
在开发程序在机型文件读写之后,忘记使用close关闭文件,会产生意想不到的后果
这里可以使用with语句打开文件,就无需使用close关闭文件
写入缓冲
14.模块和库
模块
模块也是对象
在pp.py中调用 有一个函数是save.py(里面包含savetofile函数)
1)import save #在aa.py中导入save模块,save成了模块中的一个变量
2)from save import savetofile
将模块放入包中
- 定义:存放模块的目录,用于管理大量模块(按功能分类)。包(Package)
- 结构:
- 可包含子包(嵌套目录)和模块文件。
- Python 3.3+ 无需
__init__.py
,但早期版本需空文件标识为包。
库的概念
- 定义:一组实现通用功能的模块 / 包,供其他程序调用。
- 分类:
- 标准库:Python 内置,无需安装即可使用(如
sys
、time
、random
)。import random print(random.randint(1, 10)) # 生成1-10随机数
- 第三方库:需额外安装(如
requests
),通过pip
管理。
- 标准库:Python 内置,无需安装即可使用(如
15.调试程序
断点处 表示程序执行暂停此处,并且此处高亮代码没有执行
16.字典
字典:python是开发中最重要的一种数据类型
字典对象定义使用花括号{},字典里面的每个元素用逗号隔开
每一个元素都是一个键值对,键和值之间用冒号隔开(键通常是数字或者字符串,值可以是任何形式对象)
members = {
'account1' : 13 ,
'account2' : 12
}
得到字典元素个数:print(len(members))
清空字典:members.clear()