数字类型&字符串内置方法
内置方法
今天我们主要来了解数字类型和字符串类型的内置方法
内置方法这个东西说难不难,说简单也不简单。通俗的来讲内置方法最复杂的部分不就是一个个Python已经给你写好的函数而已,只要调用就可以了。没见过猪跑,猪肉总吃过吧。但是内置方法毕竟不少,想要一一牢记并且熟用可不是一件简单的事情。下面就来听我一一阐述吧
数字类型内置方法
整型
作用
用于描述身高,年龄,id等
定义方式
x = 10
x = int('10')
x = int(10.1)
x = int('10.1') # 报错
内置方法
没有内置方法,只有算术运算+-*/和比较运算><>=<=
存在一个值还是多个值
一个值
有序or无序(有序有索引,无序无索引)
压根就没有这一说
可变or不可变
不可变(变量值而言),值变id也变
浮点型
作用
薪资
定义方式
x = 1.11
x = float('1.11')
内置方法
算术运算和比较运算
存在一个值还是多个值
一个值
有序or无序
没有这一说法
可变or不可变
不可变(类似整型)
字符串类型
作用
姓名和性别等
定义方式
name = 'hyc'
name = b'hyc' #打印出来的bytes类型(然而并没有什么卵用)
字符串内置方法(只有字符串类型才能用)
s = 'hyc is a stu'
1、索引取值
print(s[1])
表示从中取字符,第一个字符为0,依次推类
2、切片
print(s[0:4:1]) #1表示从左到右
print(s[-4::-1]) # -1表示从右到左 # 不推荐掌握
print(s[4:0:-1]) # -1表示从右到左
结果:hyc
a si cyh
i cy
3、for循环
for i in s:
print(i)
这在for循环中也讲过,可以遍历这个字符串中所有的字符
4、strip
print(s1.strip())
去两端的空白以及俩端别的字符
strip用法:首先判断字符串s的两端字符,为,再去strip里找有没有,有就去掉,再去判断字符串s的两端字符,!-,再从strip里面找,有去掉,没有停止去掉
因此,strip的用法并不止于此
s2 = '***!!!!!hyc is a stu----***'
print(s2.strip('-*!')) # 指定多个字符一起去掉,只要strip里面有的字符就全部干掉
print(s2.strip('hyc')) # 并未找到该字符串俩边的字符存在于strip函数中,因此什么也不会去掉
还是把话题回归到登录系统。有的用户比较“出类拔萃”,呀喜欢在输入用户名或者密码的前后手残打空格,这个时候只要在input函数后面加上strip函数,他们就嚣张不起来啦
username_db = 'hyc'
pwd_db = '123456'
code = random.randint(1000,9999) #
code = f'{code}{chr(random.randint(97,117))}{chr(random.randint(97,117))}{chr(random.randint(97,117))}'
while count < 3:
print(code)
username = input('username:').strip()
pwd = input('pwd:').strip()
code_inp = input('code:').strip()
if username_db == username and pwd_db == pwd and code == code_inp:
print('登录成功,但是并没有什么卵用')
break
else:
count += 1
print('\033[43m傻逼,账号密码都忘了.验证码都看不懂\033[0m')
其中strip还有衍生用法:
print(s2.lstrip('*')) # !!!!!nick handsome----***
print(s2.rstrip('*')) # ***!!!!!nick handsome----
其中lstrip,rstrip 分别为去除左侧字符和去除右侧字符
5、split() 切割
切割,顾名思义,就是讲该字符串以某一字符为标准切成n段,并以列表的形式打印出来
print(s.split()) # 默认以空格切割字符串
print(s.split('s')) # 以!切割
print(s.split('s', 1)
结果为:
['hyc', 'is', 'a', 'stu']
['hyc i', ' a ', 'tu']
['hyc i', ' a stu']
split 也是同理,还有 rsplit,这里就不再演示了
6、in或 not in
就是判断该字符是否在这个字符串中,返回 true 或者 false
print('h' in s) # True
print('$' not in s2) # True
7、长度
可以打印出该字符串的长度
print(len(s))
结果为12
8、lower&upper
lower 的作用为将字符串里所有的大写字母转为小写,而upper则相反
这俩个函数对字符串中的数字没有影响
s3 = 'Hyc is so Handsome1'
print(s3.lower()) # hyc is so handsome1
print(s3.upper()) # HYC IS SO HANDSOME1
9、startswith&endswith
startswith用来判断字符串是否以该字符开始,endswith则判断是否以该字符结束
print(s3.startswith('H')) # true
print(s3.endswith('q')) # false
10、join
join用的比较多,经常和split连用
s3 = ' '
print(s3.join(['234', '234', '234'])) # 以s3为间隔符,拼接列表里的每一个元素
结果为:234 234 234
那么怎么和split连用呢?
s = '唱/跳/RAP/篮球/鸡你太美'
s1 = s.split('/')
print('*'.join(s1))
输出结果为唱*跳*RAP*篮球*鸡你太美
11、replace
可以将字符串中的某个或者多个字符替换成想替换的字符
s2 = 'qiaobiluo is a loli'
print(s2.replace('loli', 'dama'))
结果为:qiaobiluo is a dama
12、isdigit(纯数字)/isalpha(纯字母)
这俩个函数可判断字符串是否为纯数字或者纯字母
s = '1234'
print(s.isdigit()) # true
s2 = 'aaac1c'
print(s2.isalpha()) # false
还记得之前讲的猜年龄程序吗?我们就可以在函数中加入isdigit函数,来判断用户是否输入的是数字
answer = 18
count = 0
while count < 3:
data = input("请输入你猜的年龄:").strip()
if data.isdigit():
age = int(data)
if age > answer:
print("猜大了")
elif age < answer:
print("猜小了")
else:
print("恭喜你猜对了")
break
count += 1
if count == 3 :
again_play = input("你猜错三次啦,如果想再玩请输入Y/y,不想玩请输入N/n").strip()
if again_play == 'Y' or again_play == 'y':
count = 0
elif again_play == 'N' or again_play == 'n':
print("太遗憾啦")
break
else:
print("我怀疑你就是在捣乱,不让你玩了,哼")
break
else:
print("请输入数字哦,亲")
这样程序就更加完整了,并且不会出现bug
13、find/rfind//index/rindex/count (从这开始的内置函数以了解为主)
find的主要作用是从字符串中寻找字符,rfind也是同理
index和rindex如果找不到,则会报错
而count函数则可以寻找该字符在字符串中出现的次数
s2 = '**23423***hy234234c $$ hand223423some******'
print(s2.find('$')) # 从左找,找到第一个停止,找不到返回-1
print(s2.rfind('$')) # 从右找,找到就停止,找不到返回-1
print(s2.index('$')) # 找不到报错
print(s2.rindex('$')) # 找不到报错
print(s2.count('h')) # 1
14、center/ljust/rjust/zfill
这几个函数的作用都市填充,前三者可以在字符串的俩侧,前,后分别填充任意数量字符,而最后一个函数可以填充0居右
s2 = 'hyc handsome'
print(s2.center(50, '*')) # 居中
print(s2.ljust(50, '*')) # 居左
print(s2.rjust(50, '*')) # 居右
print(s2.zfill(30)) # 填充0居右
结果为:hyc handsome
hyc handsome**************************************
**************************************hyc handsome
000000000000000000hyc handsome
15、expandtabs
用于在字符串中将tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8
s2 = 'a\ta'
print(s2)
print(s2.expandtabs(8)) # 针对\t而言
结果为:a a
a a
16、captalize/swapcase/title(只针对英文)
这三者一般用于英文字母的大小写转换,和lower,upper简单的互换大小写不同,这三个函数可以做到更多的事,通常用于将英文字符串转化为文章开头,书名等
s2 = 'harry Potter'
print(s2.capitalize()) # 首字母(一句话的开头)大写,其他全小写,用在段落开始
print(s2.swapcase()) # 大小写互换
print(s2.title()) # 所有单词首字母大写
结果为:Harry potter
HARRY pOTTER
Harry Potter
存在一个值还是多个值
一个值
有序or无序
有序
可变or不可变(重点)
定义:
可变:值变id不变,不可哈希
不可变:值变id也变,可哈希
不可变
s2 = 'abc'
print(id(s2))
s2 += 'abc'
print(id(s2))
可以发现,s2的内存地址发生了变化。
总结
相比较与数字类型,字符串的内置方法要多很多。特别是字符串的内置函数,还有很多有用的,没用的,或者不知道有没有用的都没有列出来,但是最常用的已经在上面了。如果能大概记得这些内置函数,那么在敲代码的时候就不会掉这么多头发了。