目录
一、数据类型,数值运算
1.链式数值:
2.系列接包赋值:
3.常量:
4.内置数据类型:
5.运算符:
6.整数:
7.浮点型:
8.增强型赋值运算符:
9.时间的表示:
综合回顾小练习:利用海龟制图定义坐标,划出折线图并计算初始点和终点的距离
10.布尔值:
11.比较运算符:
12.逻辑运算符:
13.同一运算符:
14.整数缓存的问题:
二、字符串
1.字符串基本特点:
2.字符串的编码:
3.引号创建字符串:
4.空字符串:
5.转义字符:
6.字符串的拼接:
7.字符串的复制:
8.不换行打印:
9.从控制台读取字符串:
10.str()实现数字转型字符串:
11.使用[ ]提取字符:
12.replace()实现字符串替换:
13.字符串切片slice操作:
练习小作业:
14.split()分割和join()
15.字符串驻留机制和字符串比较:
16.字符串常用方法汇总:
17.去除首尾信息:
18.大小写转换:
19.格式排版:
20.字符串的格式化:
(1)format()基本用法
(2)填充和对齐:
(3)数字的格式化:
一、数据类型,数值运算
1.链式数值:
x=y=123,把同一个变量赋值给多个变量
2.系列接包赋值:
a,b,c = 1,2,3;把a赋值为1,b赋值为2,c赋值为3,注意:个数要一致;使用系列解包的变量变换
a, b = 1, 2
a, b = b, a
print(a, b)
2 1
3.常量:
python不支持常量,即没有语法规则限制改变一个常量的值,对于一个变量来说,赋值是可以更改的。常量的名称都大写,用下划线隔开。
Max_SPEED = 120
print(Max_SPEED)
120
4.内置数据类型:
整型:整数;浮点:小数;布尔型:表示真假,包括Ture 和 False;字符串型:abc,尚学堂等。
5.运算符:
加——+;减—— -;乘——*;浮点数除法——/;整数除法——//(取整数);模(取余数)——%;幂——**;注:0 不能做除数;divmod()函数可以同时得到商和余数。
a = 7/2
b = 7//2
c = 7%2
d = 2**10
print(a,b,c,d)
#3.5 3 1 1024
print(divmod(13, 3))
#(4, 1)得到的答案是个元组
6.整数:
(1)10进制、2进制0b、8进制0o、16进制0x;
#0b是二进制
print(0b101)
5
#0o是八进制
print(0o10)
8
#0x表示16进制,16进制里面f是10,16进制有1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
print(0xf)
10
(2)用int()实现类型转换,不能转换字符串;
print(int(3.9999))
3
(3)自动转型:整数和浮点型混合运算时,表达结果自动转型成浮点数;
(4)在python里面,int可以存储任意大小的整数,google这个词本身就代表10的100次方。
7.浮点型:
(1)浮点型用
科学计数法表示,比如:3.14,可以表示为314E-2或者314e-2;
(2)这些数字在内存中也是按照科学计数法存储;float(3)可以把整数型转换为浮点型;
(3)float(“3.14”}可以把字符串转化为小数;整数和浮点数混合运算时,表达式结果自动转型为浮点数;
(4)round()可以返回四舍五入的值。注:不改变原有的值,产生的是新的值。
8.增强型赋值运算符:
a = a + 1 等价于 a += 1;注:+和=之间不需要加空格
9.时间的表示:
在计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒进行计算的。1970年这个 时刻称为“unix时间点”;python可以通过time.time()获得当前时刻,返回值以秒为单位。
import time
a = time.time()
print(a)
#1611734769.4795678
#取整
b = int(a)
print(b)
#1611734864
#获得分钟数
totalMinutes = a/60
print(totalMinutes)
#26862284.781424604
#分钟数取整
totalMinutes = a//60
print(totalMinutes)
26862284.0
#取小时数
totalHours = totalMinutes//60
print(totalHours)
#447704.0
#计算天数
totalDays = totalHours//24
print(totalDays)
#18654.0
#计算年
totalYear = totalDays//365
print(totalYear)
#51.0
综合回顾小练习:利用海龟制图定义坐标,划出折线图并计算初始点和终点的距离
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((x1 - x4) ** 2 +(y1 - y4)**2)
#计算平方根利用到了math模块里的sqrt包
turtle.write(distance)
10.布尔值:
True =1;False = 0
11.比较运算符:
(1)等于 ==;(2)不等于!=;(3)大于 >;(4)小于 <;(5)大于等于 >=;(6)小于等于 <=
12.逻辑运算符:
(1)or: x or y,x为ture,则不计算y,发生短路
(2)and: x and y,x为真,则返回y的值;若x为false,不计算y,直接返回x的值
(3)not: not x,取非
13.同一运算符:
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
is 与==的区别:is判断的是两个变量引用对象是否为同一个,即比较对象的地址;==用于判断引用对象的阿值是否相等
14.整数缓存的问题:
python会将[-5,256]范围内的整数缓存起来,则在这个范围内数,a = 5 ,b = 5. a is b 为真,默认这两个数的地址相同。而在pycharm里面的范围是[-5,任意正整数]
二、字符串
1.字符串基本特点:
(1)程序员打交道最多的是“字符串”,而不是数字,编程中的逻辑思维重要性远远超过数学能力;
(2)字符串的本质是:字符序列;python的字符串是不可变的,我们无法对原字符串做任何修改;
2.字符串的编码:
python3直接支持Unicode编码,Unicode16位可以表示世界上任何书面语言的字符
3.引号创建字符串:
通过单引号或双引号创建;字符串里本身有单引号的,外面用双引号,字符串本身有双引号的,外面用单引号;连续三个单引号或三个双引号,可以帮助我们创建多行字符串
4.空字符串:
python里面允许空字符串的存在
5.转义字符:
转义字符的使用:
(1)\n换行
a = 'I\nlove\nu'
print(a)
'''
I
love
u
'''
(2)\' 在使用单引号的字符串中,使“ ’ ”表示单引号本身的意思
#\'表示单引号的意思
b = 'I\'m a teacher'
print(b)
#I'm a teacher
(3)\续行符
#\表示续行符
print('aaaaa\
ccccccc')
#aaaaaccccccc
6.字符串的拼接:
·使用加号——'aa' + 'bb';
(1)+两边都是字符串,则是字符串的拼接;
(2)+两边都是数字,则是加法运算;
(3)+两边的类型不同,则会出现异常
·可以讲多个字符串直接放在一起拼接
print("aa" + "bb")
aabb
print("aa" "bb")
aabb
7.字符串的复制:
直接用*实现复制
print('sxt' * 3)
sxtsxtsxt
8.不换行打印:
在调用print时,会自动打印一个换行符,如果我们不想换行,则可以通过添加end = “任意字符串”
#不换行
print('aa', end="")
print('bb', end="")
print('cc')
#aabbcc
#制表符
print('aa', end="\t")
print('bb', end="\t")
print('cc')
#aa bb cc
9.从控制台读取字符串:
可以通过input() 从控制台读取键盘输入的内容
myname = input("请输入名字:") #传参
print(myname)
请输入名字:高宇星
高宇星
10.str()实现数字转型字符串:
在pycharm里面实现不了这个过程
11.使用[ ]提取字符:
字符串的本质就是字符序列
(1)正向搜索:最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推,知道len(str)-1为止;
(2)反向搜索:最右侧第一个字符,偏移量是-1.第二个偏移量是-2,以此类推,直到-len(str)为止;
a = "abcdefghijklmn"
print(a[0])
a
12.replace()实现字符串替换:
a = "abcdefghijklmn"
注:字符串是不可改变的,我们无法通过直接令a[0] = "gao"来改变字符串中第一个位置的内容,但是可以通过replace的方式来改变。在整个过程中,我们创建了新的字符串对象,而不是改变了以前的字符串
b = a.replace("c", "gao") #把“c”这个字母替换为“gao”
print(b) #abgaodefghijklmn
13.字符串切片slice操作:
a = "abcdefghijklmn"
print(a[1:5])
#截取了字符串偏移量1到4的部分 包头不包尾
bcde
print(a[1:5:2])
#第三个是数字是步长,不写的时候。一般默认为1
bd
print(a[:])
#提取整个字符串
abcdefghijklmn
print(a[2:])
#提取从第二个字符串到所有
cdefghijklmn
print(a[:2])
#从头开始提取到第二个数,不包尾
ab
print(a[-3:])
#从倒数第三个开始取到最后
lmn
print(a[-8:-3])
#从倒数第八个开始到倒数第4个,包头不包尾,
ghijk
print(a[::-1])
#步长为负,从右到左反向提取
nmlkjihgfedcba
练习小作业:
#作业1:将“to be or not to be"字符串倒序输出
#作业2:将”sxtsxtsxtsxtsxt"字符串中所有的s输出
a = "to be or not to be"
print(a[::-1])
b = "sxtsxtsxtsxtsxt"
print(b[0], b[3], b[6], b[9], b[12])
在切片操作中,当初试偏移量和终止偏移量不在[0, len(str)-1]的范围内,也不会报错,会自动默认为取len(str)-1范围内的数
14.split()分割和join()
split()可以基于指定分隔符字符串分割成多个字字符串
c = a.split()
print(c) #['to', 'be', 'or', 'not', 'to', 'be']
d = a.split("be")
print(d) #['to ', ' or not to ', '']
e = a.split("to")
print(e) #['', ' be or not ', ' be']
join()将列表中的字符串连接在一起;字符串可以通过+进行拼接,但是每+一次,就会形成一个新的对象,但是列表对象是可变的,生成一个列表直接用join()则只产生一个对象
#join一般在列表中使用,将列表中的字符串连接在一起
a = ["sxt", "sxt100", "sxt200"]
b = "".join(a)
c = "*".join(a)
print(b) #sxtsxt100sxt200
print(c) #sxt*sxt100*sxt200 通过*号将字符串连接起来
通过测试来证明,通过列表join时间更快,性能更高
通过终止时间和初始时间的时间差可以看出,join()的计算速度远超过字符串之间用+连接的速度
mport time
time01 = time.time() #起始时间
a = ""
for i in range(1000000):
a += "sxt"
time02 = time.time() #终止时间
print(time01, time02)
print("运算时间:"+str(time02 - time01)) #0.42705464363098145
time03 = time.time()#开始时间
list = []
for i in range(1000000):
list.append("sxt")
a = "".join(list)
time04 = time.time() #终止时间
print("运算时间:"+str(time04 - time03)) #0.11100530624389648
15.字符串驻留机制和字符串比较:
(1)字符串驻留:对于符合标识符规则的字符串(仅包括下划线( _ )、字母和数字时,会启用字符串驻留机制;但是在pycharm里面,只要字符串长得一样,就都符合驻留机制
(2)字符串比较和同一性:==是对字符串进行比较,字符串包括的字符是否相同;但is 或 not is 判断的时两个对象是否是同一个对象
(3)成员操作符:in、not in是关键词,判断某个字符是否在字符串中
a = "abd_3"
b = "abd_3"
if a is b:
print(1)
#测试结果为1,说明a = b,
c = "dd#"
d = "dd#"
print(id(c), id(d))
if a is b:
print(1)
else:
print(0)
a = "abcdefg"
if "a" in a:
print(1)
if "h" in a:
print(1)
else:
print(0)
if "h" not in a:
print(1)
16.字符串常用方法汇总:
17.去除首尾信息:
strip()去除字符串首尾指定的信息,通过lstrip()去除字符串左边指定的信息,通过rstrip()去除字符串右边指定的信息
a = " sxt ".strip()
print(a)
b = "*s*x*t*"
print(b.strip("*")) #去除字符串两端的*
s*x*t
print(b.rstrip("*")) #去除字符串右侧的*
*s*x*t
print(b.lstrip("*")) #去除字符串左右的*
s*x*t*
18.大小写转换:
a = "litterstar love programming and xidian"
b = a.capitalize() #产生新的字符串,首字母的大写
print(b)
Litterstar love programming and xidian
c = a.title() #产生新的字符串,每个单词的首字母都大写
print(c)
Litterstar Love Programming And Xidian
d = a.upper() #产生新的字符串,所有字符串全部转成大写
print(d)
LITTERSTAR LOVE PROGRAMMING AND XIDIAN
e = d.lower() #产生新的字符串,所有的字符都转成小写
print(e)
litterstar love programming and xidian
f = c.swapcase() #产生新的字符串,所有的大小写字符互相转换
print(f)
lITTERSTAR lOVE pROGRAMMING aND xIDIANv
19.格式排版:
center()居中;ljust()左对齐;rjust()右对齐
a = "sxt"
b = a.center(10, "*") #一共10个字符,a字符串居中,左右两边填充”*“
c = a.center(10) #一共10个字符串长度,a居中,其他地方用空格填充
d = a.ljust(10, "*") #一共10个字符串长度,a左对齐,其他地方用”*“填充
e = a.rjust(10, "*")
print(a, b, c, d, e)
sxt ***sxt**** sxt sxt******* *******sxt
20.字符串的格式化:
(1)format()基本用法
a = "名字是:{0}, 年龄是:{1}" #这里的0和1相当于是占位符
b = a.format("小星星", 18)
print(b)
名字是:小星星, 年龄是:18
c = "名字是:{0}, 年龄是:{1}, {0}是个好小伙"
d = c.format("小星星", 18)
print(d)
名字是:小星星, 年龄是:18, 小星星是个好小伙
a = "名字是:{name}, 年龄是:{age}" #传参的话不需要考虑顺序问题
b = a.format(age=18, name="littel_star")
print(b)
名字是:littel_star, 年龄是:18
(2)填充和对齐:
填充和对齐一起使用:^表示居中,>表示右对齐,<表示左对齐,符号后面加字符串的长度,前面是填充的内容
#填充和对齐
a = "我是{0}, 我喜欢的数字是{1:*^8}"
b = a.format("高宇星", "666")
print(b)
我是高宇星, 我喜欢的数字是**666***
a = "我是{0}, 我的存款有{1:.2f}"
b = a.format("高宇星", 31435678.245678)
print(b)
我是高宇星, 我的存款有31435678.25
(3)数字的格式化:
浮点数用f,整数用d
常用的格式如下: