python基础_day02

链式赋值
链式赋值用于同一个对象赋值给多个变量

x=y=123   			 #相当于:x=123;y=123

系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)

x=y=123   			 #相当于:x=123;y=123

a,b=1,2				#使用系列解包赋值实现变量交换
a,b=b,a

常量
python不支持常量,即没有语法规则限制改变一个常量的值。我们只是能约定常量的命名规则,以及在程序的逻辑上不对常量进行修改。

MAX_SPEED=140		#实际上是可以修改的,只是逻辑上不去改它

最基本内置数据类型

1)数字(整数、浮点数)
运算:
+,-,*,/ (浮点数除法), // (整数除法),%,**(乘幂)
除数为0,会产生异常
使用divmod()函数可同时得到商和余数:

divmod(13,3)		#返回一个元组(4,1),商4,余1

整数:
python中,除了10进制,还有其他三种进制,二进制,八进制,十六进制

12					#十进制12
0b101				#二进制5
0xff				#十六进制255

使用 int() 可实现强制类型在转换

int(3.99)			#直接去掉小数,返回3
int('a')			#错误:单个字符或字符串,不能通过int()强制转换为整数
int("adsa1242")		#错误,字符和数字混合,不能转换
int("345.67")		#错误,小数字符串不可以转换
int("123")			#正确,整数型字符串可以实现转换,

自动转型:
整数和浮点数混合运算时,表达式结果自动转换成浮点数。
python3中可做超大数的计算,而不会造成“整数溢出”,这也是python特别适合科学运算的特点
浮点数:
类型转换与四舍五入:
float()可以将其他类型转化成浮点数。
整数和浮点数混合运算时,表达式结果自动转换成浮点数。
round(value),可以返回四舍五入的值
增强型赋值运算符:

a=a+1				#等价于  a+=1
					#此外还有: -=, *=, /=, //=, **=, %=, 且“+=”中间不能加空格

时间表示:
计算机中时间的表示是从1970年1月1日00:00:00开始,以毫秒进行计算。这样时间就可全部用数字来表示。
python中可以通过time.time()获得当前时刻,返回值是以秒为单位
【小练习】:定义多点坐标_绘出折线_并计算起始点和终点距离

import turtle
import math

#定义多个坐标
x1,y1=100,100
x2,y2=100,-100
x3,y3=-100,-100
x4,y4=-100,100

#绘制折线
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)

#计算起点和终点距离
distance=math.sqrt((x4-x1)**2+(y4-y1)**2)
turtle.write(distance)

布尔值: 0表示False,1表示True
比较运算符: ==,!=, >, <, <=, <=
逻辑运算符: or, and , not (或,与, 非)
同一运算符: is , is not
is与 == 的区别:
is用于判断两个变量引用的对象是否属于同一个,即比较对象的地址
== 用来判断引用变量引用对象的值是否相等,默认调用对象的__eq__()方法
整数缓存问题:

a=1000
b=1000			#a,b不在[-5,256]范围内,1000这个对象没有被缓存
a==b			#True
a is b			#False

python仅仅对比较小的整数对象进行缓存(范围为[-5,256]),若保存为文件执行,范围是[-5,任意正整数]

c=10
d=10			#c, d不在[-5,256]范围内,1000这个对象没有被缓存
c is d			#True

2)字符串
python的字符串是不可变的,我们无法对原字符串做任何修改。但,可以将字符串的一部分复制到新创建的字符串,达到看起来修改的效果。
python不支持单字符类型,单个字符也是作为一个字符串使用的。
字符串编码
使用内置函数 ord() 可以把字符转化成对应的unicode编码;
使用内置函数 chr() 可以把十进制数字转换成对应的字符
引号创建字符串

a="ast"
b="I’am a teacher!"
c='my name  is "zhaoqiang"'

空字符串和len()函数

c=''
len(c)				#len(c)=0
len("abc我我")		#unicode编码,英文字符和汉字字符地位一样,len为5

转义字符:
\ (续行符),\\(反斜杠符号),\’(单引号),\" (双引号),\b(退格),\n(换行),\t(制表),\r(回车)

print("aaaaa\
bbbbbb")

字符串拼接: “aa”+“bb”=“aabb”
+两边是字符串,则拼接
+号两边是数字,则相加
+号两边类型不同,则报错

str1 = "i love"+"you"			#"i loveyou"
str2 = "love"*2					#"lovelove"

str()实现数字转型为字符串

str(True)						#"True"
str(3.14e2)						#"314.0"

使用 [ ] 提取字符
正向搜索: 0—> len-1
反向搜索:-1—> -len

a = "i love you"
print(a[0], a[1], a[2], a[3], a[4])		#"i lov"
print(a[-3], a[-2], a[-1])				#"you"

replace实现字符串替换

a = "i love you"
a = a.replace(" ","*")			#间接改变a="i*love*you"
print(a)

字符串切片slice操作
slice操作可以快速提取字符串,标准格式为: [start:end:step]
[ : ] —> 提取整个字符串
[ : end]—>从头到end
[start: ]—>从start到尾
[start : end : step]—>从start到end,且步长为step

#包头不包尾
a="i love you"
b=a[1:5]				#b=" lov"  (包含1,但不包含5)
c=a[1:8:2]				#c=" oey"
d=a[:]					#d=a="i love you"
e=a[-3:]				#e="you"
f=a[-8:-3]				#f="love "
g=a[::-1]				#g="uoy evol i",逆序排
h=a[2:400]				#不会报错,从2到最后就可以

split() 和 join() 合并
split() 可以基于指定分隔符将字符串分割成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下:

>>>a="to be or not to be"
>>>a.split()
['to','be','or','not','to','be']
>>>a.split('to')
['','be or not','be']

join()的作用和split()作用刚好相反,用于一系列子字符串的拼接,join()性能比 ‘+’ 好

a=['i','love','you']
''.join(a)					#"iloveyou"
' '.join(a)					#"i love you"	

练习: 测试不同拼接符‘+’和join()的效率差异

import time
a=''
time01=time.time()
for i in range(1000000):
    a+="sxt"
time02=time.time()
print("运算时间:",time02-time01)

time03=time.time()
li=[]
for i in range(1000000):
    li.append('sxt')
a=' '.join(li)            
time04=time.time()
print("运算时间:",time04-time03)
运算时间: 0.42529821395874023    #‘+’,在1000000次循环中会产生1000000个对象
运算时间: 0.10572123527526855	 #join() ,''.join(list)效率确实高多了

字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在驻留池中。python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线,字母和数字)会启用字符串驻留机制。
成员操作符
in / not in 关键字,判断某个子字符串是否在相应字符串中
字符串常用方法汇总

len()                   --->返回字符串长度
a.startwith("lihelin")  --->是否以指定字符开头
a.endwith("lihelin")    --->是否以指定字符串结尾
a.find("lihelin")	    --->返回第一次出现指定字符串的位置
a.rfind("lihelin")   	--->返回最后一次出现指定字符串的位置
a.count("lihelin")		--->返回指定字符串出现的次数
a.isalnum()				--->是否所有字符全是字母或数字

去除首尾信息
我们可以通过 strip() 去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,通过rstrip()去除字符串右边指定信息。

"*s*x*t*".strip('*')		#"s*x*t"
"*s*x*t*".ltrip('*')		#"s*x*t*"
"*s*x*t*".rstrip('*')		#"*s*x*t"

大小写转换

a.capitalize()        	   产生新的字符串,首字母大写
a.title()				   产生新的字符串,每个单词首字母大写
a.upper()				   产生新的字符串,所有字符大写
a.lower()				   产生新的字符串,所有字符小写
a.swapcase()			   产生新的字符串,所有字母大小写转换

格式排版

a.center(10,'*')		10个字符,a居中,左右*填充
a.ljust(10,'*')			10个字符,a左对齐,右边*填充
a.rjust(10,'*')			10个字符,a右对齐,左边*填充

其他方法

isalnum()				是否只由字母或数字组成
isalpha()				是否只由字母(包含汉字)组成
isdigit()				是否只由数字组成
isspace()				是否为空白符:\t,\n,' '
isupper()				是否为大写字母
islower()				是否为小写字母

字符串格式化
format()基本用法

a="姓名:{0}   年龄:{1}"
b=a.format("lihelin",22)
print(b)
c="姓名:{name}   年龄:{age}"
d=c.format(name="lihelin",age=22)
print(d)

填充与对齐
填充与对齐一起用,^ 、< 、>分别是居中、左对齐、右对齐,后面带宽度
:后面带填充的字符,只能是一个字符,不指定的话用空格填充

"我是{0},我喜欢数字{1:*^8}".format("lihelin",666)		#要求字符数:8; ^:居中; *:填充字符
"我是{0},我喜欢数字{1:*<8}".format("lihelin",666)

数字格式化

a="我是{0},我的存款有{1:.2f}".format("lihelin",12000) #.2f:两位小数, 12000.00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值