Python day7:基本数据类型及内置方法

一、range()
1.完整语法:range(起始位置,结束位置,步长)
2.省略步长:range(起始位置,结束位置) 默认步长为1
3.省略步长与起始位置:range(结束位置) 默认0为起始位置,1为步长

二、可变与不可变类型
1.当值改变,id也改变,为不可变类型
2.当值改变,id不改变,为可变类型
判断小窍门:
当一个值只能整体改变,如整型,age = 18 ,18是一个整体,无法修改1或者8。即为不可变类型。如列表l = [1,2.3],可以把其中一个值改变,如我们可以l[1] = 5,把2改成5,即为可变类型。

三、数字类型
1.整型int
用途:记录年龄,个数,号码等
定义方式:

age = 18  # 该代码等于 age =  int(18),这个也是把纯数字字符串改为整型的工作原理
s = '123'
print(type(s))
s = int(s)
print(type(s))
---------------------------------------
<class 'str'>
<class 'int'>

常用操作及内置方法:
常用与数学运算与比较运算
无内置方法
了解:10进制转各种进制方法

bin(11)  # 2进制
oct(11)  # 8进制
hex(11)  # 16进制
-----------------------------
0b1011
0o13
0xb

2.浮点数型float
用途:记录身高,体重,薪资等
定义方式:

height = 180.5  # 该代码等于 height =  float(180.5),这个也是把带小数的纯数字字符串改为浮点数型的工作原理
s = '123.5'
print(type(s))
s = float(s)
print(type(s))
---------------------------
<class 'str'>
<class 'float'>

常用操作及内置方法:
常用与数学运算与比较运算
无内置方法

3.数字类型总结
①.只能存一个值
②.不可变类型
③.只有一个值,不存在有序无序之分

四、字符串型:
用途:记录有描述性的状态,如名字,公司名称,家庭地址等
定义方式:在引号(' '或者" "或者''' ''')包含一串字符

s = 'hello'  # s = str('hello')等价,str()可以把任意类型转成字符串型

常用操作及内置方法:
以下所有方法必须掌握
①按索引取值(正取反取都可以),但不能改变值:

s = 'hello'
s[0] = 'h'
s[-1] = 'o'

②切片(顾头不顾尾),切片属于拷贝操作,并不会修改原字符串

s = "hello world"
s1 = s[1:8:2]  # 完整切片语法
print(s1)
s2 = s[1:8]  # 省略步长,默认为1
print(s2)
s3 = s[:8:2]  # 省略起始位,默认0开始
print(s3)
s4 = s[::2]  # 省略起始位与结束位,默认从0到结束
print(s4)
s5 = s[::]  # 全省略,即打印一遍原字符串
print(s5)
s6 = s[:]  # 全省略的缩写方法
print(s6)
print(id(s),id(s6))  # 可以看到,当全省略后,s与s6的id是一样的,所以是一个同一个变量
------------------------------
el o
ello wo
hlow
hlowrd
hello world
hello world
2192257509872 2192257509872

③计算长度 len()
计算字符串有多少个字符,返回一个数字

s = "hello world"  # 空格也算一个字符
print(len(s))
-------------------------
11

④成员运算 in与not in
判断某个字符串是否在被判断字符串中

s = "hello world"
print('o' in s)
print('p' not in s)
------------------------------
True
True

⑤移除 strip()
1.当使用strip()方法时,默认会消除字符串两边的空格,不会消除中间的空格

s = '    hello world     '
print(s.strip())
---------------------------
hello world

2.当strip()中加入字符,可移除字符串两边的指定字符

s = '*****hello world****'
print(s.strip('*'))
-------------------------------------
hello world

3.当使用strip()时,若遇到的第一个字符没有指定在strip()的括号中,将会直接停住,不再移除其他字符

s = '                 /*-/**/-he   llo         */-    '
news = '        /*-/**/-he   llo*********/-      '
s1 = s.strip()
print(s1)
s2 = s.strip("/*-")
print(s2)
s3 = news.strip("/*- ")
print(s3)
--------------------------------------------------------
/*-/**/-he   llo         */-
                 /*-/**/-he   llo         */-    
he   llo

⑥切分 split()
把字符串按照某个部分切成一个列表

s = "yang,123,456,789"
s1 = s.split(',')
print(s1)
-------------------------
['yang', '123', '456', '789']

split的可以指定切分几次,当不设置的时候,默认全部切分,工作原理是,先按照指定字符切割一次,将切分的左边存入列表,然后后边所有存入列表第二个位置,然后再从第二个位置切分,取出第二个切分对象放入列表第二个位置,右边新组成一个元素,再次存到列表第三个位置,以此类推,直到结束

s = "yang,123,456,789"
print(s.split(',',1))
print(s.split(',',2))
print(s.split(',',3))
-----------------------------
['yang', '123,456,789']
['yang', '123', '456,789']
['yang', '123', '456', '789']

可用join在拼回去

s = "yang,123,456,789"
s1 = s.split(',')
s2 = ','.join(s1)
print(s2,type(s2))
-------------------------
yang,123,456,789 <class 'str'>

⑦循环 for
可利用for循环,取出字符串的各个字符

s = 'hello world'
for i in s:
    print(i,end='_')  # 利用end='_'是为了使显示效果更明显
---------------------------------------
h_e_l_l_o_ _w_o_r_l_d_

对于字符串还需要掌握的方法:
1、strip,lstrip,rstrip

print("***hello***".strip("*"))
print("***hello***".lstrip("*"))
print("***hello***".rstrip("*"))
------------------------------------------------
hello
hello***
***hello

2、lower,upper

msg = "AbCDEFGhigklmn"
res = msg.lower()
res = msg.upper()
print(res)
res=msg.swapcase()
print(res)
--------------------------------------------
ABCDEFGHIGKLMN
aBcdefgHIGKLMN

3、startswith,endswith

msg = "sb is lxx sb"
print(msg.startswith("sb"))
print(msg.endswith("b"))
print(msg.endswith("c"))
-----------------------------------------
True
True
False

5、split,rsplit

userinfo="egon:123:18"
# print(userinfo.split(":"))
print(userinfo.split(":",1))
print(userinfo.rsplit(":",1))
----------------------------------
['egon', '123:18']
['egon:123', '18']

6、replace

msg = "***egon hello***"
res=msg.replace('*','').replace(' ','')
res=msg.strip('*').replace(' ','')
print(res)

s="lxx hahah wocale lxx sb 666"
# res=s.replace('lxx','sb')
res=s.replace('lxx','sb',1)
print(res)
print(s)
---------------------------------------------------
egonhello
sb hahah wocale lxx sb 666
lxx hahah wocale lxx sb 666

7、format的三种玩法
7.1 %s的方式

name = "egon"
age = 18
res1="my name is %s my age is %s" % (name,age)
print(res1)
----------------------------------------
my name is egon my age is 18

7.2 format的方式

name = "egon"
age = 18
res1="my name is {} my age is {}".format(name,age)
res1="{0}{0}{0}{1}".format(name,age)
res1="my name is {name} my age is {age}".format(age=18,name="egon")
print(res1)
----------------------------------------------------
my name is egon my age is 18

7.3 f''

name = "egon"
age = 18
res1 = f"my name is {name} my age is {age}"
print(res1)
--------------------------------------------------
my name is egon my age is 18

#了解:f搭配{}可以执行字符串中的代码
res=f'{len("hello")}'
print(res)

f'{print("hello")}'

#f包含的字符串可以放到多行
name = "egon"
age = 18
res1 = f"my name is {name} " \
       f"my age is {age}"

#{}内不能有\以及#
print(f'my name is {{egon}}')

print('胜率是 %s%%' %70)
#了解:https://zhuanlan.zhihu.com/p/110406030

8、isdigit:判断字符串是否由纯数字组成

print("adsf123".isdigit())
print("123".isdigit())
print("12.3".isdigit())
---------------------------------------------
False
True
False
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容