python学习Day10
Day 10
今日内容概要
- 数据类型的内置方法
- 整型方法
- 浮点型方法
- 字符串方法
- 列表方法
今日内容详细
1.数据类型的内置方法
内置方法:每个数据类型自带的功能
'使用数据类型的内置方法统一采用句点符:
数据类型.方法名()
eg:
1):'张三'.字符串具备的方法()
2): name='张三'
neme.字符串具备的方法()
1.整型方法
1.关键字
int()
2.整型就是整数 主要用于计算 没有内置方法
3.转换
int(待转换的数据)
1)类型转换
print(type(int('123'))) #结果为int 纯数字可以转换
print(type(int('1a1'))) #结果会报错 字符不可以转换
print(type(int('12.12'))) #结果会报错 小数点不可以转换
print(type(int([1,2,3]))) #结果会报错 列表不可以转换,必须是纯数字
2)进制转换 (二进制、八进制、十进制、十六进制)
'十进制转其他进制'
print(bin(100)) #bin 结果是0b1100100 十>>二
0b是二进制数的标识
print(oct(100)) #oct 结果是0o144 十>>八
0o是八进制数的标识
print(hex(100)) #hex 结果是0x64 十>>十六
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
2.浮点型方法
1.关键字
float
2.浮点型就是小数 主要用于计算 也没有内置方法
3.类型转换
float(待转换的数据)
print(float('123')) #结果为123.0
print(type(float('123'))) #结果为float
print(float('12.12')) #结果为12.12
print(type(float('12.12'))) #结果为float
print(float('12.12.12')) #结果会报错
4.针对布尔值的特殊方法
print(float(True)) # 1.0
print(float(False)) # 0.0
print(int(True)) # 1
print(int(False)) # 0
补充说明:
a = 23.00
b = 1.2
c = a * b
print(c) # 27.599999999999998
"""
python对数字不敏感 很容易出错
那python为什么还能做人工智能 数据分析 金融量化?
是因为有很多模块是基于python开发的
"""
3.字符串方法
1.关键字
str
2.类型转换
# 类型转换:字符串可以转换所有数据类型,兼容所有数据值
print(str(123) #整型
print(str(123.11) #浮点
print(str([1, 2, 3, 4]) #列表
print(str({'name': 'jason'}) #字典
print(str(True) #布尔值
print(str((1, 2, 3, 4)) #元组
print(str({1, 2, 3, 4}) #集合
3.需掌握的方法
s1 = 'hello 张三'
1)索引取值:单个字符
print(s1[0]) #h
print(s1[-1]) #三
2)切片取值:多个字符 '顾头不顾尾'
print(s1[:]) #打印所有
print(s1[0:3]) #hel 从索引0的位置到索引2的位置
print(s1[-4:-1])#0 张 从索引-3的位置到索引-1的位置
print(s1[-1:-5:-1]) #三张 o 需第三个参数-1来控制方向才可以从右往左切
3)间隔/方向
print(s1[::2])#hlo张 隔一位取一个值
print(s1[0:7:1])#hello 张
print(s1[0:7:2])#hlo张
print(s1[1:7:1])#ello 张
4)统计字符串中字符的个数
print(len(s1)) #8 需注意空格也算字符
5)移除字符串首尾指定的字符
eg:
name = ' 张三'
print(name.strip())#张三
print(len(name))#4
'是因为字符串调用内置方法时不是改变原数据,而是产生了新的数据。 如果想要用修改后的数据需重新绑定一个名字'
name1=name.strip()
print(name1)#张三
eg:
name = '$$张三$$'
print(name.strip('$'))#张三 移除左右两边
print(name.lstrip('$'))#张三$$ 只移除左边
print(name.rstrip('$'))#$$张三 只移除右边
案例:用户登录界面当用户输入数据时加了空格
name=input('输入名字:').strip()#让用户输入完直接更改信息并绑定给前面的name
6)按照指定的字符切割字符串:#切割后会成为列表
'当字符串出现了连续的特征符号 就用切割操作'
eg:
xx = '张三|123|run'
xx1 = xx.split('|')
print(xx)#张三|123|run
print(xx1)#['张三','123','run']
xx = '张三|123|run'.split('|')
print(xx)#['张三', '123', 'run']
xx = '张三|123|run'.split('三')
print(xx)#['张','|123|run']
xx = '张三|123|run'
name,pwd,hobby = xx.split('|')#解压赋值让name=张三,pwd=123,hobby=run
xx='张三|123|run'
print(xx.split('|',maxsplit=1))#['张三', '123|run']
#从左往右只切一次
xx='张三|123|run'
print(xx.rsplit('|',maxsplit=1))#['张三|123', 'run']
#从右往左只切一次
7)字符串大小写转换(常见输入验证码时)
lx = 'HeLLo66阿'
print(lx.lower())#hello66阿
'大写转小写'
print(lx.upper())#HELLO66阿
'小写转大写'
print(lx.islower())#False
print('aaa'.islower())#True
'判断字符串中所有字符是否都是小写'
print(lx.isupper())#False
print('AAA'.isupper())True
'判断字符串中所有字符是否都是大写'
eg:创建一个验证码输入界面
yzm = 'CsUp66'#创建一个固定验证码
print('给你的验证码为:%s' % yzm)#给用户显示验证码时什么
yzm1 = (input('请输入验证码:'))#让用户输入验证码
if yzm.lower() == yzm1.lower():#把yzm与yzm1一起改为小写然后对比
print('正确')
else:
print('错误')
8)字符串的格式化输出
方式一:等价于%s 没优势
lx = '我的名字是{},我的年龄是{}'
print(lx.format('张三',18))#我的名字是张三,我的年龄是18
方式二:支持索引取值,可以重复使用
lx = '我的名字是{0},我的年龄是{1}{0}{1}'
print(lx.format('张三',18))#我的名字是张三,我的年龄是18张三18
方式三:支持关键字取值(按K取值),可重复使用
lx = '名字是{name}{name}年龄是{age}'
print(lx.format(name='张三',age=18))#名字是张三张三年龄是18
方法四:最常用!!
name = '张三'
age = 18
print(f'名字是{name}年龄是{age}{age}')#名字是张三年龄是1818
9) 统计字符串中指定字符出现的次数(可单可多)
lx = 'ababdddd'
print(lx.count('a'))#2
print(lx.count('ab'))#2
10)判断字符串的开头或结尾
lx = 'hello my baby'
print(lx.startswith('he'))#True
print(lx.startswith('e'))#False
print(lx.endswith('by'))#True
print(lx.endswith('b'))#False
11)字符串的替换
lx = 'cat cat one one'
print(lx.replace('cat','dog'))#dog dog one one
#从左往右全部替换
lx = 'cat cat one one'
print(lx.replace('cat','dog',1))#dog cat one one
#从左往右替换指定个数
12)字符串的拼接
lx1 = 'hello'
lx2 = 'cat'
print(lx1+lx2)#hellocat
#容易占内存 量少可以用+
print((lx1*2))#hellohello
#把一个字符重复N次
print(''.join(['hello','world','ha']))#helloworldha
print('|'.join(['hello','world','ha']))#hello|world|ha
#量多时建议使用.join 它可以自动优化内存
13)判断字符串中是否是纯数字(常用在用户输入密码等)
print('123'.isdigit())#True
print('123a'.isdigit())#False
print(''.isdigit())#False
eg:判断用户输入的是否为纯数字
age=input('你的年龄是:')
if age.isdigit():
age = int(age)
else:
print('必须输入纯数字')
14)查找某个字符对应的索引值
lx = 'hello my baby'
print(lx.index('m'))#6
print(lx.find('m'))#6
print(lx.index('m',0,5))#如果在索引0~索引5之间没有则会报错
print(lx.find('m',0,5))#-1 如果在索引0~索引5之间没有就会返回-1(没有)
15)正文相关方法(把首字母大写)
lx = 'my name is zhangsan'
print(lx.title())#My Name Is Zhangsan
#将所有首字母都大写
print(lx.capitalize())#My name is zhangsan
#将第一个单词首字母大写
4.列表型方法
1.关键字
list
2.类型转换
#能被for循环的数据类型都可以转换成列表
print(list(123)) #整数型不可转换
print(list(123.1)) #浮点型不可转换
print(list(True)) #布尔值不可转换
print(list([1,2,3])) #列表可转换 [1,2,3]
print(list({'name':'张'})) #字典可转换 ['name']
print(list((1,2,3))) #元组可转换 [1,2,3]
print(list({1,2,3})) #集合可转换 [1,2,3]
3.需要掌握的方法
lx = ['cat','tony','kevin']
1)索引取值
print(lx[0])#cat
print(lx[-1])#kevin
2)切片操作
print(lx[0:2])#['cat', 'tony']
print(lx[:])#['cat', 'tony', 'kevin']
print((lx[-3:-1]))#['cat', 'tony']
3)间隔/方向
print(lx[::2])#['cat', 'kevin']
4)统计列表中数据值的个数
print(len(lx))#3
作业:
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
3.整理今日内容及博客
4.周日下午或晚上完成本周内容总结
————————————————————————————————————————————————————————————————————————————
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']