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)

 

posted @ 2020-12-22 19:09  小熊渣渣  阅读(87)  评论(0)    收藏  举报