今日内容
数据类型的内置方法
- 简介
数据类型的内置方法可以简单的理解为python为了提高开发效率,每个数据类型内置一些快速实现效果的快捷代码。
- 代码格式
数据类型.方法名()
eg:
‘李智强’.相关数据类型具备的方法名
这里再编辑器里,当我们输入 . 的时候,会有自动提示,这大大的提高了开发效率。
不同数据类型相关的内置方法
整型
-
关键字
int() -
语言概述
整型就是整数的数据类型,主要用于代码的计算,在python中你可以发现整型没有内置方法。
-
数据转换
int(需要转换的数据)
举例说明:
eg:
age = inptu('name>>>:') # 这里我们输入的age是以字符串的形式进行
age = int(age) # 这里由于我们后面使用age的时候是以整型的形式操作的,所以这一步让age的数据类型由字符串转换为整型。
这里我们还要主要什么情况可以转换,什么情况不能转换
我可以举两个列子:
print(type(int('123a'))) # 报错,因为我们要转换的字符串里不全是数字,出现了一个a,所以无法转换。
print(type(int('123.123'))) # 报错,小数点也不行。
总结:整型要转换的时候,转换的数据值里应该全是数字。
进制转换:
十进制转换为二进制 # 二进制关键字为bin
print(bin(100))
十进制转换为八进制 # 八进制关键字为oct
print(oct(100))
十进制转换为十六进制 # 十六进制关键字为hex
print(hex(100))
转还:
二进制转换为十进制
八进制转换为十进制
十六进制转换为十进制
print(int(各进制数)) # 100
注意:当数字前面没有其他东西的时候,我们都是默认为十进制
浮点型
- 关键字
float - 类型转换
print(float())
eg:
print(float('123'))
# 123.0
print(float('123a'))
# 报错 因为和整型一样,都要是数字
print(float('123.321'))
# 可以转换
print(float('123.21.321'))
# 不可以,因为只能识别一个小数点
这里还有一个特殊的情况:就是针对布尔值,打印出的结果会是0或者1,当浮点型转换True的时候输出的1.0;而转换Flase的时候打印出来的是0.0。当整型转换True的时候输出的1;而转换Flase的时候打印出来的是0。
还有一点要强调:python对数字不是很敏感,会很容易出错;但是这不代表python不牛逼。python是很牛逼的!!!
浮点型也没有内置方法!!!
字符串
-
关键字
str() -
语言概述
字符串有很多的内置方法,这里有很多需要我们掌握。但是我们也不需要死记硬背,我们掌握几个最常用的就行了。
-
类型转换
str(转换的数据类型).内置方法() -
切片取值
data = 'jason'
print(data[0]) # j
print(data[-1]) # n 负数就是从最后往前取
print(data[1:3]) # as
print(data[-1:-3]) # 空
print(data[-1:-3:-1]) # on 第三个数是控制方向的
-
.strip():
用于移除首位的空格。这个方法我们首先可以想到各大平台和软件的登录页面。因为当我们输入密码的时候,如果我们不小心多输入了一个或者多个空格的时候, 我们也可以登录成功。这里就应用到了strip的内置方法。
eg:
data = ' 123 '
print(data.strip())
输入结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
123
Process finished with exit code 0
这里我们就看到明显的效果了!
eg:
data = 'jasdjk'
print("这是系统随机给你的验证码:%s" % data)
while True:
pwd = input('请输入你的验证码>>>:') # 这里我们没有加移除空格的内置方法,我们可以看看效果
if pwd == data:
print('你的验证码正确!')
break
else:
print('你的验证码不正确')
输出效果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
这是系统随机给你的验证码:jasdjk
请输入你的验证码>>>:jasdjk (这里我们是有一个空格的)
你的验证码不正确
请输入你的验证码>>>:
Process finished with exit code -1
data = 'jasdjk'
print("这是系统随机给你的验证码:%s" % data)
while True:
pwd = input('请输入你的验证码>>>:').strip() # 这里我们加了移除空格的内置方法,我们可以看看效果
if pwd == data:
print('你的验证码正确!')
break
else:
print('你的验证码不正确')
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
这是系统随机给你的验证码:jasdjk
请输入你的验证码>>>:jasdjk (这里我们也加了一个空格,输出结果就很上面不一样了)
你的验证码正确!
Process finished with exit code 0
-
.split()
用于以什么为间隔断开的内置方法,格式:.split('以什么断开'),然后就可以进行分别取值。
这里我们要注意当使用split()内置方法间隔开字符串的时候,字符串是以列表的形式产生的
然后下面取值我们就可以使用列表的索引取值取值。
eg:
data = 'hello|world'
print(data.split('|')) # 以|为间隔,断开
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
['hello', 'world'] # 以列表的形式产生
Process finished with exit code 0
然后我们还可以通过索引取值的方式取到我们想要的值
eg:
data = 'jason|123'
name, pwd = data.split('|') # 这里我们可以想到解压赋值
print(name, pwd)
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
jason 123
Process finished with exit code 0
有些人就会想,如果有多个间隔符,但是我想断开第一个,怎么使用呢?
eg:
data = 'jason|123|read'
name, pwd = data.split('|', maxsplit=1) # maxsplit的意思就是从左到右最多使用一次
print(name, pwd)
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
jason 123|read
Process finished with exit code 0
-
.format()
用于格式化输出,相对于%s更加方便。
举例说明:
eg:
data = 'my name is {}, I like {}'
print(data.format('jason', 'money')) # .format内置方法充当了%s的作用
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
my name is jason, I like money
Process finished with exit code 0
还有一种方式:
eg:
name = 'jason'
hobby = 'read'
print(f'my name is {name}, I like {hobby}') # 先赋值,在格式化输出
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
my name is jason, I like money
Process finished with exit code 0
也可以支持索引取值
eg:
data = 'my name is {0}, I like {1} {1}' # 也支持索引取值
print(data.format('jason', 'money'))
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
my name is jason, I like money money
Process finished with exit code 0
-
.lower()
将字符串里字母的大写转换为小写。
-
.upper
将字符串里字母的小写转换成大写。
举例说明:(也可用于验证码的功能)
eg:
data = 'JaSon666'
print("这是系统随机给你的验证码:%s" % data)
while True:
pwd = input('请输入你的验证码>>>:').strip() # 这里我们还未使用字符串字母大小写的转换内置方法
if pwd == data:
print('你的验证码正确!')
break
else:
print('你的验证码不正确')
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
这是系统随机给你的验证码:JaSon666
请输入你的验证码>>>:jason666 # 这里我输入的时候未管大小写,结果报错了。
你的验证码不正确
请输入你的验证码>>>:
Process finished with exit code -1
然后我对上面的代码修改一下,加上大小写的转换内置方法,我们来看看效果:
eg:
data = 'JaSon666'
print("这是系统随机给你的验证码:%s" % data)
while True:
pwd = input('请输入你的验证码>>>:').strip()
if pwd.lower() == data.lower(): # 这里我们使用字符串大小写的内置方法让系统给的验证码和我们输入的验证码都转换成小写的形式。
print('你的验证码正确!')
break
else:
print('你的验证码不正确')
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
这是系统随机给你的验证码:JaSon666
请输入你的验证码>>>:JASON666
你的验证码正确!
Process finished with exit code 0
这里我们使用lower和upper都是可以的,反正让系统给定的和我们输入的都转为同一种形式就可以了
-
.join
字符串的拼接 格式: '间隔标识'.join(拼接在一起的字符串)
eg:
name = 'jason'
pwd = '123'
print('|'.join((name, pwd))) # 先赋值,再利用.join内置方法以'|'拼接在一起
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
jason|123
Process finished with exit code 0
我们拼接的时候也可以不使用内置方法,直接使用运算符‘+’拼接
-
.replace
字符串的替换
eg:
data = 'my name is jason'
print(data.replace('jason', 'kevin')) # 利用字符串的替换内置方法将jason替换成kevin
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
my name is kevin
Process finished with exit code 0
还有一个情况,就是想指定个数替换
eg:
data = 'my name is jason, I like jason, I think jason is a boy'
print(data.replace('jason', 'kevin', 2)) # 这里2的含义是,从左到由,我指定前两个Jason替换成kevin
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
my name is kevin, I like kevin, I think jason is a boy
Process finished with exit code 0
-
.startswith
判断字符串开头是否是以你想的字符开头
-
.endswith
判断字符串开头是否是以你想的字符结尾
举例说明:
eg:
data = 'my name is jason'
print(data.startswith('my')) # 判断是否以'my'开头
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
True
Process finished with exit code 0
注意由于是判断,所以我们打印出的是布尔值
eg:
data = 'my name is jason'
print(data.endswith('n')) # 判断是否以'n'结尾
输出结果:
D:\python.3.6.4\python36.exe "D:/pythonProject/day6/01 作业.py"
True
Process finished with exit code 0
注意,我们判断的是字符串,字符串是以单个字符进行操作的
-
.isdigit()
用于判断字符串里是不是全数字。
举例说明:
eg:
print('123'.isdigit()) # Ture
print('123a'.isdigit()) # Flase
print('123.21'.isdigit()) # Flase 小数点也不行
print(''.isdigit()) # Flase
-
.index() .find()
在字符串里找你要找的东西在哪一个位置
eg:
data = 'hello world!'
print(data.index('!')) # 11
print(data.find('d')) # 10
-
.count
用于统计字符串中重复字符的个数
举例说明:
eg:
data = 'addafdsfgfjyvdfghvgfadefqtrdsadfsgdgsadgas'
print(data.count('s')) # 5
列表
-
关键字
list
-
数据转换
print(type(list('123')), list('123')) # <class 'list'> ['1', '2', '3']
print(type(list({'name': 'jason', 'pwd': '123'})), list({'name': 'jason', 'pwd': '123'}))
# <class 'list'> ['name', 'pwd'] 只有K参与
注意:能被for循环的数据类型都可以转换成列表
列表的索引取值和字符串是一样的,只不过取值单位不一样,列表是整个数据值。
有一个特殊情况:
l1 = ['jason', 'kevin', 'oscar', 'tony']
print(l1[::-2]) # 这里2代表的是间隔取值数,-代表是方向
今日作业
- 作业一
- 基于字符串充当数据库完成用户登录(基础练习)
data_source = ‘jason|123’ # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123'
a = data_source.split('|') # 运用间隔内置方法产生一个列表
while True:
name = input('请输入你的用户名:').strip() # 运用了首位消除空格
pwd = input('请输入你的密码:').strip()
if name == a[0] and pwd == a[1]:
print('登录成功!')
break
else:
print("用户信息错误!")
- 作业二
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = [‘jason|123’, ‘kevin|321’,‘oscar|222’]
data_source = ['jason|123', 'kevin|321', 'oscar|222']
while True:
name = input('请输入你的用户名:').strip() # 消除空格
pwd = input('请输入你的密码:').strip()
for i in data_source:
j = i.split('|') # 间隔开产生一个列表
if name == j[0] and pwd == j[1]: # 索引取值
print('登录成功!')
break
else:
print('你输入的用户名或者密码不正确')
continue # 输入错误跳过,不进行外循环的循环体代码
break