int float str bool
时间:时间的本质也可以当做是一条线。
unix时间点:1970年1月1如00:00:00开始,毫秒(1/1000)为单位进行计算。
通过导入时间模块:time.time()获得当前时刻。返回值是毫秒,带微秒的浮点值。
保存当前的秒数(精确到秒)
b=int(time.time())
print b
分钟
totalMinutes = b/60
totalMinutes #小时,天,周,月,年同理
练习:
定义多个点坐标,绘出折现并计算起始点终点距离
思路。定义坐标绘制图形使用turtle.计算起始点到终点距离
import turtle
定义多个点
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.penup()
turtle.goto(x2,y2)
turtle.pendown()
turtle.penup()
turtle.goto(x3,y3)
turtle.pendown()
turtle.penup()
turtle.goto(x4,y4)
turtle.pendown()
计算起始点和终点距离
#引入math模块,
import math
a = math.sqrt((x1-x4)**2+(y1-y2)**2)
a
输入a = 200,任务完成
bool
本质是1和0
1 == True
0 == false
比较运算符:
== != > < >= <=
逻辑运算符
or and not
x or y
x如果是true,则返回true,不计算y,直接返回true;x如果是false,则返回y
x and y
x如果是true,则返回y的值,x为false,则不计算y,直接返回false
not x
同一运算符
is is not
判断两个标识符是不是引用同一个对象,直接比较地址
和 == 区分开,是比较对象的value的值是否i相等
例子:
a = 1000
b = 1000
a == b
true
a is b
flase
整数缓存问题:python会把在[-5,256]中的数字缓存起来(每次赋值的时候,他们的地址相同)
例子
c = 100
d = 100
c == d
c is d
true
true
在pycharm中或者为保存文件的时候,会把[-5,任意正整数]缓存起来
如何选择用 == 还是 is
当比较值的时候,用;当判断是不是一个对象的时候,用is。
==判断的是值,is判断的是地址
字符串
字符串的编码
python3直接使用unicode。可以表示任何书面语言的字符。16位标识一个字符。ASCII只能表示英文,因为是8位表示一个字符
内置函数
ord():把字符转化为unicode码
chr():把十进制数字转化成对应的字符
创建字符串的问题:
1.为什么用2中方法定义字符串呢?“” ‘’
比如 a = “I’m a teacher”,a = ‘my name is “tom”‘这种类型的字符串。本身带有单引号或者双引号,我们可以使用另外一种方法定义,
2.连续三个单引号或者双引号,帮助我们创建多行字符串。
比如a = ‘’ name = “zhangsan”
company = “shangxuetang”,age = 18
lover = “Tom”’’’
3.空字符串
python允许恐怕那个字符串,不包含任何字节,长度 = 0
c = “”
print(len©)
0
4.转义字符
使用反斜杠+特殊符号:\ (续行符两行拼接,打印出来是一行) \ (打印出来是一个反斜杠0) \’(当作不会和前面引号配对的引号) \b \n(\n后面换行)
\t \r
5.end
print(“aa”,end = “”)
print(“bb”,end = “22”)
aa12
bb22
字符串拼接,复制
“aa”+“bb”
“aabb”
a = “A”*3
AAA
input
a = input(“请输入名字”)
转型
str()实现数字转型字符串
int(“123”)
123
str(5.20)
“5.20
使用[]提取字符串
比如"abcd”
索引编号:a:0 b:1 c:2 d:32
a=“abcdefghijklmnopqrstuvwxyz”
a[0] = a
a[25] = z
a[-1] = z
a[-2] = y
a[-26] = a
修改字符串,由于字符串有不可改变的属性,所以需要用replace方法
a = a.replace(“c”,“d”)
a
“abcdefghijklmnopqrstuvwxyz”
在这里是把a重新赋值了。并不是修改了原来的"abcdefghijklmnopqrstuvwxyz"
字符串的切片(截取子字符串):slice
a = “abcdefghijklmnopqrstuvwxyz”
a[2]
c
a[1:5] #第一个到第五个,包头不包尾
bcde
a[1:5:2] #第一个到第五个,步长为2
bd
操作数为负的时候
和取索引一样,负向
a[-8:-3]
stuvw
a[-8,-3,-1]
wvuts
a[2:1000]
cdefghijklmnopqrstuvwxyz
练习:
将”to be or not to be“字符串倒序输出
把步长变为-1就可以
a = ”to be or not to be“、
a[::-1]
将”sxtsxtsxtsxtsxt“字符串所有的s输出
b=”sxtsxtsxtsxtsxt“
b[::3]
字符串的分割:split分割 和 join()合并
split()可以基于指定分隔符字符串分成多个子字符串,不指定就默认是空格,比如:
a = ”to be or not to be“
a.split()
[“to”,“be”,“or”,“not”,“to”,“be”]
a.split(“be”)
[“to”,“or not to”,""]
join()
和两个字符串拼接差不多
一般和列表联合使用
a = [“a”,“b”,“c”]
"".join(a)
ab*c
字符串的比较:
对于符合标识符规则的字符串,会启用字符串驻留机制
a = “abd_33”
b = “abd_33”
a is b
True
c = “dd#”
d = “dd#”
c is d
False
成员操作符:in/not in
a = “abcdefg”
“b” in a
True
"ds"in a
False
字符串的常用的方法
大小写的转化:
a.capitalize()#产生新的字符串,首字母大写
a.title()#产生新的字符串,每个单词首字母大写
a.upper()#产生新的字符串,所有字符转化成大写
格式排版:
a = “SXT”
a.center(10,"")
SXT**
a.center(10)
SXT
a.ljust(10,"")
SXT*******
其他方法:
字符串的格式化:
%和str.format()
format:
a = “名字是:{0},年龄是:{1}”
a.format(“张三”,12)
名字是:张三,年龄是:12
c = “名字是:{name},年龄是:{age}”
c.format(name = “张三”,age = 12)
名字是:张三,年龄是:12
填充和对齐:
“我是{0},我喜欢数字{1:^8}”.f otmat(“张三”,12) # ^的意思是对齐
我是张三,我喜欢数字**12***
“我是{0},我的存款有{1:.2f}”
a.format(“张三”,3888.8888888)
我是张三,我的存款有3888.88
因为在正常情况下,无法修改字符串,只能创建新的字符串对象,但是经常会需要我们原地修改字符串,可以使用io.StringIO对象或者array模块
import io
s = “hello sxt”
sio = io.StringIO(s)
sio.seek(7)
7
sio.write(“g”)
hello gxt