数字类型&字符串内置方法

内置方法

今天我们主要来了解数字类型和字符串类型的内置方法

内置方法这个东西说难不难,说简单也不简单。通俗的来讲内置方法最复杂的部分不就是一个个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的内存地址发生了变化。

总结

相比较与数字类型,字符串的内置方法要多很多。特别是字符串的内置函数,还有很多有用的,没用的,或者不知道有没有用的都没有列出来,但是最常用的已经在上面了。如果能大概记得这些内置函数,那么在敲代码的时候就不会掉这么多头发了。

posted @ 2019-08-02 16:49  黑井白子  阅读(185)  评论(0编辑  收藏  举报
Live2D