今日内容概要
- 数据类型的内置方法
数据类型的内置方法
定义:
内置方法可以理解为每个数据类型自带的功能。
如何使用:统一使用句点符号
结构:
数据类型. 方法名()
eg: ‘jason’.字符串具备的方法()
通常快速查看数据类型的内置方法可借助编译器自动提示!!!
整型
- 关键字:
int()
- 整型就是整数,主要用于计算,没有内置方法
- 类型转换
1,类型转换
正确转换:
(1).age = input()
(2).age = int(age)
(3).print(type(int(‘123’))) # 字符串 内部是纯数字情况 可以转换
报错转换:
(4).print(type(int(‘123a321’))) # 字符串里面必须是纯数字才可以转换
(5).print(type(int(‘123.33’))) # 小数点也不可以转换
2.进制转换
‘’‘十进制转其他进制’‘’
bin() 将十进制转二进制:print(bin(150)) 0b10010110 0b是二进制数的标识
oct() 将十进制转八进制:
print(oct(150)) 0o226 0o是八进制数的标识
hex() 将十进制转十六进制
print(hex(150)) 0x96 0x是十六进制数的标识
如果数字前面没有任何标识 默认就是十进制
‘’‘其他进制转十进制’‘’
自动识别进制数print(int(0b1100100)) # 100 print(int(0o144)) # 100 print(int(0x64)) # 100
人为指定进制数
print(int('0b1100100', 2)) # 100 print(int('0o144', 8)) # 100 print(int('0x64', 16)) # 100
浮点型
- 关键字:
float()
- 类型转换
1,类型转换
正确转换:
(1).print(float(‘123’)) # 123.0
(2)print(float(‘123.12’)) # 可以识别一个小数点
报错转换:
(3)print(float(‘123a123’)) #不可以识别字母
(4)print(float(‘123.123.1.2.2.2.2.2.2’)) # 不可以识别多个小数点
2.针对布尔值的特殊情况
print(float(True)) # 1.0
print(float(False)) # 0.0
print(int(True)) # 1
print(int(False)) # 0
- 补充和说明:python对数字不是很敏感,容易出错
a = 23.00
b = 1.2
c = a * b
print(c)
D:\Python36\python36.exe "E:/桌面/6.24知识点/02 数据类型的内置方法.py"
27.599999999999998
Process finished with exit code 0
字符串
- 关键字:
str()
- 类型转换(兼容所有数据)
1.类型转换
整型(int):print(str(123), type(str(123)))
浮点型(float):print(str(123.11), type(str(123.11)))
列表(list):print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
字典(dict):print(str({‘name’: ‘jason’}), type(str({‘name’: ‘jason’})))
布尔值(bool):print(str(True), type(str(True)))
元组(tuple):print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
集合(set):print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
- 需要掌握的方法:
1.索引取值:单个字符 支持负数
s1 = 'hello jason!' print(s1[0]) # h print(s1[-1]) # ! print(s1[-2]) # n
2切片取值:支持多个字符,支持负数,切片的顺序默认从左往右
s1 = 'hello jason!' print(s1[0:3]) # hel 从索引0的位置开始切到索引2的位置 顾头不顾尾 print(s1[-1:-4]) # 切片的顺序默认从左往右,相互冲突,所以无法打印 print(s1[-1:-4:-1]) # !no 可以通过第三个参数的正负一 控制方向 print(s1[-4:-1]) # son 顾头不顾尾
3.间隔/方向
s1 = 'hello jason!' print(s1[:]) # 取所有值 print(s1[::2]) # 针对整个字符串 隔一个取一个 print(s1[0:5:1]) # hello 默认1可以不写() print(s1[0:5:2]) # hlo 隔一个取一个
4.统计字符串中字符的个数
s1 = 'hello jason!' print(len(s1)) # 12 print(len('hello jason!')) # 12 空格也算字符
5.移除字符串首位指导的字符
name = ' jason ' print(len(name)) # 显示会有九位数,空格也算在内 print(name.strip(), len(name.strip())) # jason 5位数
‘’‘字符串调用内置方法 不是改变原数据 而是产生了新的数据’‘’
name = ' jason ' res = name.strip() print(name, len(name)) # jason 9位数 print(res, len(res)) # jason 5位数
除了可以移除空格以外,还可移除其他符号
desc1 = '$$jason$$' print(desc1.strip('$')) # jason print(desc1.lstrip('$')) # jason$$ 移到left(左边) print(desc1.rstrip('$')) # $$jason 移到right(右边)
举个栗子:
用户登录代码:username = input('username>>>:').strip() # 先获取用户输入 再立刻移除首尾空格 最后绑定给变量名username if username == 'jason': # 'jason ' == 'jason' print('登录成功') else: print('你不是jason!')
6.按照指定的字符切割字符串
使用条件:如果字符串中出现了连续的特征符号,则优先考虑使用切割操作info = 'jason|123|read' res = info.split('|') # 切割字符串之后结果是一个列表 print(res, type(res)) # ['jason', '123', 'read'] <class 'list'>
先切割后赋值
info = 'jason|123|read' name, pwd, hobby = info.split('|') # 解压赋值 #等价于 name, pwd, hobby = ['jason', '123', 'read']
其他用法
print(info.split('|', maxsplit=1)) # 从左往右 只切一次 结果一就是一个列表 ['jason', '123|read'] print(info.rsplit('|', maxsplit=1)) # 从右往左 只切一次 结果依旧是一个列表 ['jason|123', 'read']
7.字符串大小写相关
s1 = 'Hello World 666 我是python小白' print(s1.lower()) # hello world 666 我是python小白 print(s1.upper()) # HELLO WORLD 666 我是PYTHON小白 # 判断字符串中所有的字母是否是全小写 print(s1.islower()) # False print('aaa'.islower()) # True # 判断字符串中所有的字母是否是全大写 print(s1.isupper()) # False print('AAA'.isupper()) # True
举个栗子:验证码大小写登录
code = 'JaSon666' print('这是网页给你返回的随机验证码:%s' % code) confirm_code = input('请输入验证码>>>:') if confirm_code.upper() == code.upper(): # 统一转大写 或者小写 再做比对 print('验证码正确') else: print('验证码错误')
8.字符串的格式化输出
方式1: 等价于%s占位 没有什么优势res1 = 'my name is {} my age is {}' print(res1.format('jason', 18)) # my name is jason my age is 18
方式2: 支持索引取值 并且支持重复使用
res2 = 'my name is {0} my age is {1} {0} {1} {1} {1}' print(res2.format('jason', 18)) # my name is jason my age is 18 jason 18 18 18
方式3: 支持关键字取值(按k取值) 并且支持重复使用
res3 = '{name} {name} {age} my name is {name} my age is {age}' print(res3.format(name='jason', age=18)) # jason jason 18 my name is jason my age is 18
方式4:推荐使用(******)
name = 'jason' age = 18 print(f'my name is {name} my age is {age} {name} {age}') # my name is jason my age is 18
9.统计字符串中指定字符出现的次数
res = 'sdashdjasdwjjkashdjasdjqwhasjdjahdjwqhdjkasdhwsdaadadadadad' print(res.count('j')) # 出现9次 print(res.count('ad')) # 出现5次
10.判断字符串的开头或者结尾
res = 'jason say ha ha ha heiheihei' # 判断开头 print(res.startswith('jason')) # True print(res.startswith('j')) # True print(res.startswith('b')) # False # 判断结尾 print(res.endswith('heiheihei')) # True print(res.endswith('hei')) #True print(res.endswith('h')) #False
11.字符串的替换
res = 'jason jason jason NB NB NB' # 从左往右全部替换 print(res.replace('jason', 'tony')) # tony tony tony NB NB NB # 从左往右替换指定个数 print(res.replace('jason', 'tony', 1)) # tony jason jason NB NB NB
12.字符串的拼接
res1 = 'hello' res2 = 'world' # 字符串支持加号拼接 print(res1 + res2) # helloworld # 字符串支持乘号重复 print(res1 * 5) # hellohellohellohellohello # join方法拼接 print(''.join(['hello', 'world', 'hahaha'])) # helloworldhahaha print('|'.join(['hello', 'world', 'hahaha'])) # hello|world|hahaha
列表中的数据都必须是字符串类型
print('$'.join(['jason', 'say', 666])) # 直接报错提示
13.判断字符串中是否是纯数字
print('123'.isdigit()) # True print('123a'.isdigit()) # False print(''.isdigit()) # False
举个栗子:猜年龄游戏之输入年龄
age = input('age>>>:') # 先判断是否为串数字 if age.isdigit(): age = int(age) else: print('你能不能好好输入') # 如果输入为非数字则会提示
14.查找某个字符对应的索引值
res = 'hello world jason' # 方法一: print(res.index('d')) # 10 # 方法二: print(res.find('d')) # 10
index与find区别:
'''index查找索引 如果没有则报错''' print(res.index('d',0,5)) #直接报错 '''find查找索引 如果没有则返回-1''' print(res.find('d',0,5)) # -1
15.正文相关操作
res = 'my name is jason' # 将所有单词首字母大写 print(res.title()) # My Name Is Jason # 将第一个英语的首字母大写 print(res.capitalize()) # My name is jason
列表
- 关键字:
list()
- 类型转换
1.类型转换
数字(整型,浮点型)不能转成列表
print(type(list(123)))
print(type(list(123.22)))
字符串可以转换列表
print(type(list(‘12jas’)), list(‘12jas’))
只有字典的键参与转换
print(type(list({‘name’:“jason”,‘pwd’:123})), list({‘name’:“jason”,‘pwd’:123}))
“”“能够被for循环的数据类型都可以转换成列表”“”
- 需要掌握的方法:
1.索引取值(相同于字符串取索引值)
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0]) #jason print(l1[-1]) #tony
2.切片操作
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[0:3]) # ['jason', 'kevin', 'oscar'] print(l1[:]) # ['jason', 'kevin', 'oscar', 'tony'] print(l1[-4:-1]) # ['jason', 'kevin', 'oscar']
3.间隔/方向
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(l1[::2]) # ['jason', 'oscar']
4.统计列表中数据值的个数
l1 = ['jason', 'kevin', 'oscar', 'tony'] print(len(l1)) # 4
作业提交
作业一:
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = ‘jason|123’ # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
# 作业一:
data_source = 'jason|123'
res = data_source.split('|')
while True:
name = input('name>>>:').strip()
pwd = input('pwd>>>:').strip()
if name == res[0] and pwd == res[1]:
print('登录成功')
break
else:
print('你不是jason!')
作业二
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = [‘jason|123’, ‘kevin|321’,‘oscar|222’]
# 作业二
data_source = ['jason|123', 'kevin|321','oscar|222']
while True:
name = input('name>>>:').strip()
pwd = input('pwd>>>:').strip()
for i in data_source:
res = i.split('|')
if name == res[0] and pwd == res[1]:
# if '|'.join((name,pwd)) == i:
print('登录成功')
break
else:
print('你不是jason!')
continue
break