Python-学习笔记
文章目录
- Python-学习笔记
-
- Python代码编写
- 1——变量
- 2——运算符
- 3——循环语句
- 4——条件语句
- 5——字符串
-
- 5.1——字符串的存储地址原理
- 5.2——字符串 截取
- 5.3——字符串的常见操作
-
- 5.3.1——取长度-len
- 5.3.2——查找内容-find,index,rfind,rindex
- 5.3.3——判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
- 5.3.4——统计字符串中的某字符的个数-count
- 5.3.5——替换内容-replace
- 5.3.6——切割字符串:split,rsplit,partition,rpartition
- 5.3.7——修改大小写:capitalize,title,upper,lower
- 5.3.8——空格处理:添空格:ljust,rjust,center;去空格:lstrip,rstrip,strip
- 5.3.9——字符串拼接:join(列表的拼接:['','','','','',''].join)
- 5.3.10——字符串格式化
- 6——列表
- 7——元组
- 8——字典
- 9--集合
- 小总结
- ------------------------------------------------------------------
pycharm常用快捷键
- shift+enter 添加一行
- ctrl+/ 行注释
- ctrl+shift+/ 块注释、多行注释
- tab/ shift+tab 缩进、不缩进当前行
- ctrl+D 复制选定的区域或行
- ctrl+home 第一行,ctrl+end 最后一行
- ctrl+g 弹出一个框,输入跳转的行数
- ctrl+alt+L格式化
Python代码编写
1——变量
python是一个弱语言编码,在变量声明的时候对数据类型不是很严格。围绕变量从三个方向学习:1.变量命名;2.变量赋值;3.数据类型。 创建变量的基本格式:变量名=变量
1.1——变量命名
变量名的命名规范:
1.字母、数字、下划线(不能数字开头、不能使用关键字、严格区分大小写)。
2.每个单词大写GetName、get_name或用下划线间隔。
1.2——变量赋值
变量赋值不同于C和Java不需要声明变量类,系统会自动进行数据类型的判断。感觉很奈斯!
一般情况下 整数会被认为是int型
小数会被认为是float型
单双三引号会被认为是字符串
赋值为true和false会被认为是布尔类型
然后会根据数据的大小长度再细分为是long型、double型。
无须定义,就很nice! 字符串的赋值 字符串:‘单引号’、“双引号”、‘’‘三引号’‘’
单双引号用于在输出时避免编译出错:’xx说“xxxx”‘
三引号用于保留格式输出:
a=‘’’
123
456
789
‘’’
则输出样式与你三引号中的样式一样。 字符串格式化 :引用%s、%d等来替换输出字符串中的变量。
name = 'Tom'
age = 18
# 输出语句
print("my name is " + name + ". I'm " + str(age) + " years odl.")
# 这样的输出格式和Java有点相像
# 输出语句格式化
print("my name is %s. I'm %d years odl" % (name, age))
# 这样的输出格式和C有点相像
重名变量:变量可以重名,在函数使用时,会就近原则,会使用函数之前离函数最近的变量进行使用。
1.3——数据类型
基本数据类型:int、float、string、boolean。type() 用于判断数据类型。
类型转换:
例:
a=1
type(a) 单独使用没有输出
格式:type(变量名) 判断变量类型,用print输出
print(type(变量名))
print(type(a)) 用print辅助输出
1.3.1——输入与输出
input(builtins 内置标准库) 和 print
用input输入的值在输出时都会被封装成字符串类型,!!!注意:这时候再对输入的内容进行修改就需要注意数据类型适当运用数据类型转换。
字符串与字符串的相加就等于字符串的拼接。
格式:变量名=input(‘输入处的指导提示信息’)
小区别:在c语言中输入的变量类型是可以控制的,而且有时候还会帮助你转换,但python中输入的就是字符串,而且它还不帮你转。
print使用时是默认换行的,
print()的end参数使用总结:
print(list,end=”“)
1.end的默认参数是换行:end=”\n“
2.end设置为空字符可以阻断换行:end”“
3.end可以设置任意字符串:end=”++“
1.3.2——进制转换
- 转二进制:bin(变量)
- 转八进制:oct(变量)
- 转十六进制:hex(变量)
- 转十进制:int(变量)
- 前缀: 0b 二进制 、0o 八进制 、0x 十六进制 、 默认十进制
- n= 0x558 该变量n为十六进制数
字符串转整形可以,但带小数点的字符串不能转整形;
one = input('输入第一个数:')
two = input('输入第二个数:')
print(one + two)
# 字符串的拼接
print(int(one) + int(two))
# 字符转换成整形
three = input('输入第三个数:')
four = input('输入第四个数:')
print(three + four)
# 字符串的拼接
print(int(three) + int(four))
# 字符转换成整形
结果
字符串转浮点型;
int —> str //整形转字符串;
float —> str //浮点型转字符串;
int —> float //整形转浮点型;
float —> int //浮点型转整形:小数点之后的数会被去掉。
boolean —> int //布尔型转整形:True---->1
False---->0
boolean —> float //布尔型转浮点型:True---->1.0
False---->0.0
boolean —> str //布尔型转字符串:True---->‘True’
False---->’False‘
int —> boolean //整形转布尔类型:大于0的数----->True
空字符串、 0----->False
1.4——变量与存储地址相关函数
id函数:用来查看变量的地址 is函数:用来比较多个变量的存储地址是否相同
#id函数的用法
a='abcd'
print(id(a))
#------------结果
12345678
#is函数的用法
b='1234'
c=b
print(b is c)
#------------结果
True
2——运算符
2.1——算数运算符
+、-、*、/
2.2——赋值运算符
= ---> 赋值
+=、-=
*= ---> 自乘
**= ---> 次方运算
/= ---> 自除
//= ---> 整除
%= ---> 模运算(求余)
2.3——关系运算符
> 、<、 ==、 !=、 >=、 <=
2.4——逻辑运算符
and 与
or 或
not 非
2.5——位运算符
& ---> 按位与运算
| ---> 按位或运算
^ ---> 按位异或运算
~ ---> 按位非运算
<< ---> 按位左移
>> ---> 按位右移
2.6——运算符的优先级
3——循环语句
3.1—— while循环
用于不固定次数的循环 格式: while 条件: #条件成立才运行(布尔值为True)
循环体 #循环体要注意循环结束条件
else: 上面的循环体没有出现中断过(break)就会执行下面的指令 # 注:else不仅可以放在while循环中,for循环同样适用,下面for循环中用法一样。
执行指令
break:跳出当前循环结构
例:
count=0
while True:
print(count)
count+=1
if count==n
break #跳出循环
可以用if配合break来在某一种情况下跳出循环,相比起直接用while,while要明确一个主要的循环条件或循环次数,
if配合break就可以针对运算中的某一种小类情况进行跳出,或是不明确循环条件时。
3.2 ——for循环
有固定次数的循环 格式:
for 变量名 in range(n):
print(变量名)
打印 n-0个数,默认从0开始 循环 n-1次
for 变量名 in range(start,stop): #包前不包后
print(变量名)
打印 stop-start个数,从start开始 循环 stop-start次
for 变量名 in range(start,stop,step):
print(变量名)
step:步数值:每step次打印(循环)出的变量的变化量由1变为step
for i in range(n):
循环体
else:
执行指令
for i in range(1, 11):
print(i, end="")
print()
for i in range(0, 11):
print(i, end="")
print()
for i in range(11):
print(i, end="++")
for i in range(0, 11, 2):
print(i)
s='abcd12345'
for i in s:
print(i) #结果:---> a b c ... 1 2 ....
代码执行结果: 区别for循环的几种用法和熟悉print输出的几种方式
3.3——跳出语句与嵌套语句
3.3.1——跳出语句—>break与continue
continue语句:
在循环中出现continue,则跳过之后的循环内容,从新循环。
跳过本次循环(后面的语句不执行)继续下一次循环。
区别于break:
在循环中出现break,则跳出循环体执行后面的语句。
3.3.2——嵌套语句
循环嵌套 —> 打印三角 例:
n = 1
while n <= 5:
print('*' * n) # 这里的格式是python中特有的
n += 1
print('------------------------')
n = 1
while n <= 5:
m = 0
while m < n:
print('*', end='')
m += 1
n += 1
print()
4——条件语句
(运算符构成条件)
4.1——if
格式: if 条件:
条件成立执行的语句
例:
d=input(‘请输入id:/n’) #提示:这里的input输入的是字符串类型,所以在下面判断的时候要进行转换 不然就 if id==‘1’
if id==int(1):
print(你的id为1)
print(。。。。。)
。。。。
python又一大特点:
python中不用{}来规定内容范围,python用缩进来表示该行代码是否与上一行是一体的。if条件语句中,if条件命令下的条件命令就是if命令行下缩进在if之后的命令语句
格式1:
if 条件1:
条件1成立执行的语句
else:
条件1不成立执行的语句
格式2:
if 条件1:
条件1成立执行的语句
elif 条件2:
条件2成立执行的语句
elif 条件3:
条件3成立执行的语句
.....
else:
以上条件都不成立执行的语句
if的简写形式:
成立的执行语句 if 条件 else 不成立的执行语句,比如:print(ok) if a>b else print(no) 例:
a = int(input('输入比大小的a值:'))
b = int(input('输入比大小的b值:'))
print('Ok') if a > b else print('No')
if会将条件结果自动转换成一个布尔值:
只有在空字符串和0、None、()、{}、[]的时候,布尔值为False,其他时候都为True
随机数:
import random #导入random这个库
ran=random.randint(范围) #random.randint(范围:1,10):生成随机数的函数
绝对值:
abs(变量) #将变量变为绝对值
5——字符串
5.1——字符串的存储地址原理
在python中有一个字符串保留区,当中存放了声明的字符串,每一个字符串对应一个地址,变量名指向对应的地址,
只要字符串相同,声明内容相同的字符串变量,他都指向同一个地址。
'''
例:
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
---> 其中 s1、s2、s3 这三个变量的地址都相同
----> 具体解释: s2 = s1 的实质就是将 s1的地址赋给s2
s3 = 'hello' 因为在字符串保留区中已经存在了 hello 这个字符串,所以为了节省内存,就直接使用原来字符串的地址。
s4 = 'hello1' 这个字符串因为还未出现在字符串保留区,所以它会有一个自己的地址,而不是用’老地址‘
'''
#代码
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
print(id(s1))
print(id(s2))
print(id(s3))
print(id(s4))
5.2——字符串 截取
5.2.1——索引概念:index
一个字符串,每一个字符都对应了一个编号。
例: A B C D E F G H I
index: 0 1 2 3 4 5 6 7 8 --->这是其中一种编号方式从左自右,从0开始
index: -9 -8 -7 -6 -5 -4 -3 -2 -1 --->这是另一种编号方式从右自左,从-1开始
5.2.2——字符串索引机制
1、 0~len(s)-1
2、 -len(s)~ -1
虽然两种编号方式不同,但是在切片时,都是从左自右的书写,并且两种编号方式可以混合用
例:
#截取(结果为某一字符)
s1 = 'ABCDEFG'
print(s1[4]) ------> 结果:E
print(s1[0]) ------> 结果:A
print(s1[-1]) ------> 结果:G
5.2.3——切片(从长字符串得到一个小字符串)
print(s[1:4]) ------> 结果:BCD (规则:左闭右开,左取右不取)
print(s[0:5]) ------> 结果:ABCDE
print(s[:5]) ------> 结果:ABCDE (从0到index=4,包左不包右)
print(s[-3:-1]) ------> 结果:EF (还是先写左再写右)
print(s[-3:7]) ------> 结果:EFG (两种编号可以混合使用)
print(s[-3:]) ------> 结果:EFG (从-3开始到结尾)
print(s[:]) ------> 结果:ABCDEFG (相当于 print(s),且两个变量的地址一样)
x = s[:]
print(x)
print(s) --->结果相同
print(id(x))
print(id(s)) --->结果相同
格式变形:
字符串变量[start: end :step] 默认是一个一个取这个元素,加入步长后,每次取 当前位置+步长(step)
print(s[:-1:2]) ------> 结果:ACE
print(s[1::2]) ------> 结果: BDF
print(s[::4]) ------> 结果: AE
step:
1.步长
2.方向 step 正数 从左向右
step 负数 从右向左
print(s[::-1]) ------> 结果: GFEDCBA (默认从头开始,从右段开始,方向看步长的正负)
print(s[::]) ------> 结果: ABCDEFG (默认从头开始,从左段开始)
print(s[0:6:-2]) ------> 错误示范
原因:它从0开始,步数为负,方向向左,则无法到index=6
print(s[6:0:-2]) ------> 结果:GECA
5.3——字符串的常见操作
5.3.1——取长度-len
path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
print(len(path)) # --->结果:71
5.3.2——查找内容-find,index,rfind,rindex
- find:从左向右查找,只要遇到一个符合要求的,则返回位置,如果没有找到符合要求的则返回-1
- rfind:right find。与find对应,从右向左查找,只要遇到一个符合要求的,则返回位置,如果没有找到符合要求的则返回-1
- index与find的区别:两种在操作上没有区别,但是index如果找不到会报错。
- rindex与index对应。
path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
# 例-find
i = path.find('w')
j = path.find('m')
print(path[i:j + 1]) # --->结果:www.bilibili.com
# 除了单个字符的查找,字符串也可以
i = path.find('bilibili')
print(i) # 多个字符时它会返回字符串的第一个字符的位置
# --->结果:14
print