可变不可变类型:
不可变类型:值改变,但是id也变,证明是产生了新值,原值是不可变类型
x=1
x = 10
print(id(x))
x = 11
print(id(x))
可变类型: 值改变,但是id不变,证明就是在改原值,原值是可变类型
l = [111,222,333]
print(id(l))
l[0] = 6666666
print(id(l))
数据类型的基本使用
一、整型int的基本使用
1、作用:用来记录年龄、个数、号码、等整数相关的状态
2、定义方式:
age = 18 # 本质age = int(18)
print(type(age)) # <class 'int'>
# int数据类型转换: 可以把纯数字组成的字符串转成整型
res = int("18")
print(res) # 18
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、常用操作+内置的方法
数学运算+比较运算
-
该类型总结:
只能存一个值
不可变类型
# 补充了解:
# LONG类型 在python2中(python3中没有长整形的概念)
# 进制转换:
print(bin(11)) # bin十进制转二进制 # 0b1011
print(oct(11)) # oct十进制转八进制 # 0o13
print(hex(11)) # hex十进制转十六进制 # 0xb
x=1-2j
print(type(x)) # <class 'complex'> complex复数
print(x.real) # 1.0 实步
print(x.imag) # -2.0 虚步
三、字符串str的基本使用
1、用途:用来记录姓名、性别、国籍、家庭地址等描述性质的状态
2、定义方式:在"",'',"""""",''''''内包含一串字符
msg = "abc" # 本质 msg = str("abc")
print(type(msg)) # <class 'str'>
-
注意:
1、上述引号定义出来的都是str类型,没有区别
2、三引号可以存放多行字符串
3、引号的嵌套:外层双引号,内层只能用单引号
# 数据类型转换:str可以把任意类型都转成字符串类型
res = str([1,2,3]) # 列表转字符串类型
print(res,type(res)) # [1, 2, 3] <class 'str'>
<<< 补充知识点>>>
右斜杠的概念:
print("abc
ddd")
print(r"abc
ddd") # √
print("abc\nddd") # √
print('abc
ddd')
file_path=r'D:
ewa.py' # 加r前缀
file_path='D:\new\a.py' # 双斜杠转意
print(file_path) # D:
ewa.py
3、常用操作+内置的方法
-
优先掌握的操作:(*****)
1、按索引取值(正向取+反向取):只能取
msg = "hello world"
print(msg[0],type(msg[0])) # h <class 'str'>
print(msg[-1]) # d
msg[0]="H" # 报错 只能取不能改
2、切片 (顾头不顾尾,步长)
msg = "hello world"
res = msg[1:7]
res = msg[1:7:2] # 1 3 5
print(res) # el
print(msg)
res = msg[:]
print(res) # hello world
res = msg[::-1]
print(res) # dlrow olleh
3、长度len:
msg = "hello world"
print(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 "
res = msg.strip()
print(res)
print(msg)
# strip移除*号
msg = "********hello**********"
print(msg)
print(msg.strip("*"))
# strip移除符号
msg = "+*-he*llo***%/*"
print(msg.strip("*+-/%"))
# strip应用用户登录验证案例:
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"
print(msg[0:4])
res=msg.split(":",1) # 指定切分次数
print(res)
7、循环:
for x in msg:
print(x)
需要掌握的操作(****)
1、strip(去除左右两边)lstrip(去除左边)rstrip(去除右边)
msg = "****hello****"
print(msg.strip("*"))
print(msg.lstrip("*"))
print(msg.rstrip("*"))
2、lower(所有变小写)、 upper(所有变大写)
msg = "aAbB"
print(msg.lower())
print(msg.upper())
3、startswith(判断开头) 、 endswith(判断结尾)
msg = "egon is ok"
print(msg.startswith("egon")) # True
print(msg.startswith("eg")) # True
print(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")
print(msg)
虽打乱顺序,但仍然能指名道姓为某个位置进行传值,
字符串格式化推荐用format,相比%s效率更高
msg = "my name is {1} my age is {0}{0} {0}".format(18,"egon")
print(msg)
# 补充(传字典需要加特殊符号**)
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"
print(msg.split(":"))
print(msg.split(":",1))
print(msg.rsplit(":",1))
6、join(把列表用某一个连接符重新再拼接成字符串)
msg = "egon:18:3000"
l = msg.split(":")
print(l)
l=["egon","18","3000","44444"]
print(l[0]+":"+l[1]+":"+l[2]+":"+l[3])
print(":".join(l))
7、replace(新值替换旧值)
msg = 'egon xxxx egon yyy egon'
print(msg.replace('egon',"EGON",-1)) # 写几次换几次 -1全换
print(msg.replace('egon',"EGON")) # 默认全换
msg = "**_+_***he llo***+-**"
print(msg.strip("*_+-").replace(" ",''))
8、isdigit(判断是否为数字)
num = input(">>>: ") # num = "asfasdf"
if num.isdigit():
num = int(num)
print(num > 10)
else:
print("必须输入数字,小垃圾")
###(了解即可)***
# 1、find,rfind,index,rindex,count
msg = 'hello el abc'
res=msg.find("el")
res=msg.rfind("el")
res=msg.index("el")
res=msg.rindex("el")
res=msg.find("xxx")
res=msg.index("xxx") # 找不到则报错
print(res)
# 2、center,ljust,rjust,zfill
print('hello'.center(50,'*'))
print('hello'.ljust(50,'*'))
print('hello'.rjust(50,'*'))
print('hello'.zfill(50)) # 'hello'.rjust(50,'0')
# 3、captalize,swapcase,title
print("hello world".capitalize())
print("aAbB".swapcase())
print("hello world".title())
# 4、is数字系列
# 在python3中
num1=b'4' # bytes
num2=u'4' # unicode,python3中无需加u就是unicode
num3='四' # 中文数字
num4='Ⅳ' # 罗马数字
# bytes、unicode
print(num1.isdigit()) # True
print(num2.isdigit()) # True
print(num3.isdigit()) # False
print(num4.isdigit()) # False
# unicode
print(num2.isdecimal()) # True
print(num3.isdecimal()) # False
print(num4.isdecimal()) # False
unicode、中文数字、罗马数字
print(num2.isnumeric()) # True
print(num3.isnumeric()) # True
print(num4.isnumeric()) # True
# 5、is其他
name="EGON123"
print(name.isalpha()) # 只能由字母组成
print(name.isalnum()) # 字母或数字组成
print(name.islower())
print(name.isupper())
name=" "
print(name.isspace())
name="Hello world"
print(name.istitle())
-
该类型总结
存一个值
有序
不可变