一、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