day06 基本数据类型及内置方法
01.可变及不可变类型
不可变类型:值改变,但是id也变,证明是产生了新值,原值是不可变类型
>>> x = 10
>>> print(id(x))
8791304177600
>>> x = 11
>>> print(id(x))
8791304177632
可变类型: 值改变,但是id不变,证明就是在改原值,原值是可变类型
>>> l = [111,222,333]
>>> print(id(l))
31205120
>>> l[0] = 6666666
>>> print(id(l))
31205120
>>>
02.数据类型
Int类型
1、用途:记录年龄、个数、号码,等级等整数相关的
2、定义方式:
>>> age = 18 # 本质age = int(18)
>>> print(type(age))
<class 'int'>
int数据类型转换: 可以把纯数字组成的字符串转成整型
>>> res = int(" 18 ")
>>> print(res,type(res))
18 <class 'int'>
3、常用操作+内置的方法
数学运算+比较运算
Float类型
1、用途:记录薪资、身高、体重
2、定义方式:
salary = 3.1 # 本质salary = float(3.1)
float数据类型转换: 可以把小数组成的字符串转成浮点型
>>> res=float(111)
>>> print(res,type(res))
111.0 <class 'float'>
>>> res=float(" 3.3 ")
>>> print(res,type(res))
3.3 <class 'float'>
3、常用操作+内置的方法
数学运算+比较运算
存一个值
不可变
>>> x=3.1
>>> print(id(x))
3891600
>>> x=4.3
>>> print(id(x))
31296016
03.字符串类型
1、用途:记录描述性质的状态
2、定义方式:在"",'',"""""",''''''内包含一串字符
>>> msg = "abc" # msg = str("abc")
>>> print(type(msg))
<class 'str'>
注意:
1)、上述引号定义出来的都是str类型,没有区别
2)、三引号可以存放多行字符串
3)、引号的嵌套:外层双引号,内层只能用单引号
数据类型转换:str可以把任意类型都转成字符串类型
>>> x=[1,2,3]
>>> print(type(x))
<class 'list'>
>>> print(type(str(x)))
<class 'str'>
补充:
>>> print("abc\nddd")
abc
ddd
>>> print(r"abc\nddd")
abc\nddd
>>> print("abc\\nddd")
abc\nddd
>>> file_path='D:\\new\\a.py'
>>> print(file_path)
D:\new\a.py
3、常用操作+内置的方法
优先掌握的操作:(*****)
1、按索引取值(正向取+反向取) :只能取
>>> msg ="hello world"
>>> print(msg[0],type(msg[0]))
h <class 'str'>
>>> print(msg[-1])
d
>>> msg[0]="H"#只能取不能改
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
2、切片(顾头不顾尾,步长)
>>> meg ="hello world"
>>> msg[1:7]
'ello w'
>>> meg ="hello world"
>>> msg[1:7]
'ello w'
>>> msg[1:7:2]
'el '
>>> msg[:]
'hello world'
3、长度len
>>> msg = "hello world"
>>> len(msg)
11
4、成员运算in和not in
>>> msg = "hello world"
>>> print("he" in msg)
True
>>> print("he" not in msg) #推荐
False
>>> print (not "he" in msg)
False
5、移除空白strip
>>> msg =" hello "
>>> msg.strip()
'hello'
>>> msg = "******hello******"
>>> msg.strip("*")
'hello'
>>> msg = "*+=-hello***%/$"
>>> msg.strip("*+=-%/$")
'hello'
inp_name = input("username: ").strip() # inp_name = "egon "
inp_pwd = input("password: ").strip()
if inp_name == "egon" and inp_pwd == "123":
print('ok')
else:
print('no')
6、切分split
>>> msg="egon:123:3000"
>>> msg[0:4]
'egon'
>>> msg.split(":",1)
['egon', '123:3000']
7、循环
for x in msg:
print(x)
需要掌握的操作(****)
1、strip,lstrip,rstrip
>>> msg = "****hello****"
>>> msg.strip("*")
'hello'
>>> msg.rstrip("*")
'****hello'
>>> msg.lstrip("*")
'hello****'
2、lower,upper
>>> msg = "aAbB"
>>> msg.lower()
'aabb'
>>> msg.upper()
'AABB'
3、startswith,endswith
>>> msg = "egon is ok"
>>> msg.startswith("egon")
True
>>> msg.startswith("eg")
True
>>> msg.endswith("eg")
False
>>> msg.endswith("ok")
True
4、format的三种玩法
msg = "my name is %s my age is %s" %("egon",18)
msg = "my name is {name} my age is {age}".format(age=18,name="egon")
msg = "my name is {1} my age is {0}{0} {0}".format(18,"egon")
补充:
msg = "my name is {name} my age is {age}".format(**{"age":18,"name":"egon"})
msg = "my name is %(name)s my age is %(age)s" % {"age":18,"name":"egon"}
print(msg)
name = "egon"
age = 18
print(f"my name is {name} my age is {age}")
5、split,rsplit
>>> msg = "egon:18:3000"
>>> msg.split(":",1)
['egon', '18:3000']
>>> msg.rsplit(":",1)
['egon:18', '3000']
6、join
从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串
>>> '%'.join('hello') # 从字符串'hello'中取出多个字符串,然后按照%作为分隔符号进行拼接
'h%e%l%l%o'
>>> '|'.join(['tony','18','read']) # 从列表中取出多个字符串,然后按照*作为分隔符号进行拼接
'tony|18|read'
>>> l=["egon","18","3000"]
>>> ":".join(l)
'egon:18:3000'
>>> l=["egon","18","3000",44444]
>>> ":".join(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 3: expected str instance, int found
7、replace
>>> msg = 'egon xxxx egon yyy egon'
>>> msg.replace("egon","EGON")
'EGON xxxx EGON yyy EGON'
>>> msg.replace("egon","EGON",-1)
'EGON xxxx EGON yyy EGON'
>>> msg.replace("egon","EGON",1)
'EGON xxxx egon yyy egon'
>>> msg = "**_+_***he llo***+-**"
>>> msg.strip("*_+-").replace(" ",'')
'hello'
8、isdigit
num = input(">>>: ") # num = "asfasdf"
if num.isdigit():
num = int(num)
print(num > 10)
else:
print("必须输入数字,小垃圾")
04.列表类型
1、用途:按照位置存放多个任意类型的值
2、定义方式:在[]内用逗号分隔开多个任意类型的值
>>> l = [11,11.33,"xxx",[11,22,33]] # l = list(...)
>>> type(l)
<class 'list'>
list数据类型转换:把可迭代的类型转成列表,可以被for循环遍历的类型都是可迭代的
res = list("hello")
res = list({"k1":111,'K2':2222})
print(res)
print(list(range(1000)))
3、常用操作+内置的方法
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
l=[111,222,333]
print(id(l))
l[0]=666
print(l)
print(id(l))
l=[111,222,333]
l[0]=666
l[3]=777 # 列表索引不能超出范围
l[3] # 列表索引不能超出范围
2、切片(顾头不顾尾,步长)
>>> l=[11,22,33,44,55,66,77,88,99]
>>> l[1:7:2]
[22, 44, 66]
>>> l[:]
[11, 22, 33, 44, 55, 66, 77, 88, 99]
>>> l[::-1]
[99, 88, 77, 66, 55, 44, 33, 22, 11]
3、长度
>>> len(["aaa",111,2222])
4、成员运算in和not in
>>> "he" in ["hello",123,"world"]
False
>>> 123 in ["hello",123,"world"]
True
>>> 1 not in ["hello",123,"world"]
True
5、追加
>>> l=[111,222,333]
>>> l.append(444)
>>> l
[111, 222, 333, 444]
6.插入
>>> l=[111,222,333]
>>> l.insert(1,666)
>>> l
[111, 666, 222, 333]
>>>
7、删除
万能删除
>>> l=[111,222,333]
>>> l.insert(1,666)
>>> l
[111, 666, 222, 333]
l.remove(指定元素)
res=l.remove(222)
print(l)
print(res) #None
l.pop(指定索引)
res=l.pop(1)
print(l)
print(res) #有返回值
8、循环
l=[111,222,333]
for x in l:
print(x)

浙公网安备 33010602011771号