Day10 数据类型内置方法
1、数据类型的内置方法简介
数据类型内置可以理解成每个数据类型自带的功能,每种数据类型它带有的类型也不同
- 数据类型的内置方法统一采用句点符
数据类型.方法名() 例: 'jack'字符串具备的方法() name='jack' name.字符串具备的方法()
我们可以通过字符串在数据或数据变量名后输入句点符来使编辑器自动提示 该数据类型的功能函数
2、整型的类型内置方法
- 整型,主要用于计算没有内置函数
2.1、整型类型转换
print(type(int('123'))) # 字符串内都是纯数字是可以转换为整型,但是必须要纯数字
>>>int
print(type(int('10.2')) # 可以转成浮点型
!!!报错
print(type(int('10a')))
!!!报错
2.2、进制转换
- python中主要是 二进制、八进制、十进制、十六进制
十进制转其他进制
print(bin(100)) # 十进制转二进制 >>0b1100100 # 0b是二进制的标识符 print(oct(100)) # 十进制转八进制 >>>0o144 # 0o是八进制的标识符 print(hex(100)) # 十进制转十六进制 >>>0x64 # 0x是实录进制的标识符 数字前没有标识符 那就是默认当100进制
其他进制转10进制
标识符自动识别 print(int(0b1100100)) >>>100 print(int(0o144)) >>>100 print(int(0x64)) >>>100 人为指定进制 print(int('1100100',2)) >>>100 print(int('144',8)) >>>100 print(int('64',16)) >>>100 # 认为指定进制转换 要在字符串后加逗号来解释这串数据为几进制 !!!切记 认为进制转换要加字符串 的引号
2、浮点型类型内置方法
- 字符串同样没有内置方法
2.1、浮点型类型转换
print(type(float('123')) # 整数可以转换为浮点型,但是浮点数不能转换为整型
>>>True
print(float('123'))
>>>123.0
print(float('12a')) # 带字母和其他符号也无法转换,只能识别一个小数点
!!!报错
print(type(float('12.1'))
>>>True
将布尔值转换为整型或浮点型
print(int(True)) >>>1 print(int(False)) >>>0 print(float())
3、字符串类型内置方法
3.1、字符串类型转换
字符串类型转换兼容所有数据类型
print(str(123)) print(str(12.3)) print(str(True)) print(str([1,2,3])) print(str({'name':{123}})) print(str((1,2,3))) !!!所有数据都可以转换为字符串形式,但是转换后的字符串还保留原格式的符号。例如 列表转换后还会保留列表的中括号,字典转换完还会保留大括号
3.2、字符串索引切片操作
字符串、列表、元组都是有序的拥有下标支持索引操作
str_1='hello,python' print(str_1[0]) >>>h print(str_1[-1]) >>>n 索引取值,通过下标取对应的值,从左往右初始值为零,从右往左初始值为-1 print(str_1[1:3]) >>>el print(str_1[-4:-2]) # 负数下标 注意 小的在前 大的在后 >>>th print(str_1[::-1]) # 通过第三个参数-1来使字符串反转 >>>nohtyp,olleh print(str_1[-2:-4:-1]) # 将列表反转后 可以正常倒着数过来从后往前取,注意初始值为-1 >>>oh print(str_1[1:3])
3.3、字符串常用方法
- 字符串内置方法都不能改变原数据 只能直接打印或者重新赋值
3.3.1、移除字符 清除串首尾空格
str_1 = ' python ' str_1 = str_1.strip() # 默认移除字符串首尾空格 print(str_1) >>>python str_1 = '$$python$$' str_1 = str_1.strip('$') # 默认移除字符串首尾空格 print(str_1) >>>python str_1 = str_1.lstrip('$') # 默认移除字符串首尾空格 print(str_1) >>>python$$ str_1 = str_1.rstrip('$') # 默认移除字符串首尾空格 print(str_1) >>>$$python
3.3.2 、统计 有多少个元素
str_1 = ' python ' print(len(str_1)) >>>10
3.3.3、 以x切割字符串
info_str='jack|18|001' name,age,student_id=info_str.split('|') #以|切割将数据组成列表,再将其按排列顺序解压赋值给对应数量的变量名 print(name,age,student_id) >>>jack 18 001 print(info_str.split('|',maxsplit=1)) # 从左往右切一次,默认全切 >>>['jack', '18|001'] print(info_str.rsplit('|',maxsplit=1)) # 从右往左切1次 >>>['jack|18', '001']
3.3.4、字符串大小写转换及判断
大小写转换
print(str_2.lower()) # 全部转大写 >>>hello,pythono666 print(str_2.upper()) # 全部转小写 >>>HELLO,PYTHONO666 字母以外不参与大小写转换,不会报错
大小写判断
str_2='HELLO,PYTHONO' str_3='hello,pythono' str_4='hello,pythono666' print(str_3.islower()) >>>True print(str_2.isupper()) >>>True print(str_4.islower()) >>>True
3.3.5、字符串格式化输出
1、 print('你是{0}{0},今年{1}岁了'.format(jack,18)) >>>你是jackjack,今年18岁了 # 利用缩影在大括号内填下标,可以多次使用 2、 print('你是{name},今年{age}{age}岁了'.format(name='jack',age=18)) >>>你是jack,今年1818岁了 # 通过设置变量,可以多次使用 3、 name='jack' age=18 print(f'你是{name},今年{age}岁了') >>>你是jack,今年18岁了
3.3.6、判断指定字符出现的次数
str_1='alfhlahfhalflf' print(str_1.count('f')) # 判断f出现的次数 >>>4 print(str_1.count('lf')) # 判断lf出现的次数 >>>3
3.3.7、判断字符串以什么开头或结尾
str_1='abcd' print(str_1.endswith('d')) >>>True # 判断以什么字符结尾 print(str_1.startswith('a')) >>>True # 判断以什么字符开头
3.3.8、字符串的拼接
res1 = 'hello' res2 = 'world' print(res1 + res2) # 字符串支持加号拼接 print(res1 * 10) # 字符串支持乘号重复 print(''.join(['hello', 'world'])) # 循环取出列表值去拼接 print('|'.join(['hello', 'world'])) # 以|为间隔拼接 print('$'.join(['jason', 'say', 666])) !!!join 拼接 元素必须全部是字符串,否则无法直接拼接
3.3.9、字符串替换
res1 = 'hello python,python' print(res1.replace('python', 'word')) # 从左往右全部替换 >>>hello word,word print(res1.replace('jason', 'tony', 1)) # 从左往右替换指定个数 >>>hello word,pythom
3.3.10判断是否纯数字
print('123'.isdigit()) # True print('123a'.isdigit()) # False print(''.isdigit()) # False
3.3.11、查找索引下标
index 查找索引,如果没有的话会直接报错
find 如果查找不到会 返回-1
print(res1.find('x')) #建议使用find >>>-1
3.3.12、每个单词首字母变大写 和开头变大写
字符串开头变大写
data_1 = 'my name is ming' print(data_1.capitalize()) >>>My name is ming
字符串 单词变大写
data_1 = 'my name is ming' print(data_1.title()) >>>My Name Is Ming
4、列表的类型内置方法
4.1、字符串类型转换
!能转换被for循环的数据类型都能转换为列表
- 字符串
- 元组
- 集合
- 字典(默认将其key转换为列表,可通过字典内置方法取其values)
4.2列表字符串索引切片操作
列表与字符串一样是一个有序的容器,同样有着下标,字符串的每个元素是字符,列表里可以是任何数据类型
l1 = [123,'小明','kk','jack'] print(l1[0]) >>>123 print(l1[-1]) >>>jack print(l1[0:3]) >>>[123, '小明', 'kk'] print(l1[::-1]) >>>['jack', 'kk', '小明', 123]
5、作业
1、基于字符串充当数据库完成用户登录(基础练习
data_source = 'jason|123'
account, pswd = data_source.split('|') # 将字符串用户数据拆分赋值
while True:
user_account = input('请输入您的账号:').strip() # 接受用户输入的账号密码
user_password = input('请输入您的密码:').strip()
if user_account == account and user_password == pswd:
print('登录成功')
break
elif user_password == pswd:
print('账号错误,请重新输入')
elif user_account==account:
print('密码错误,请重新输入')
else:print('账号和密码错误,请重新输入')
2、基于列表充当数据库完成用户登录(拔高练习)
方法一、
data_source = ['jason|123', 'kevin|321', 'oscar|222']
while True:
user_account = input('请输入您的账号:').strip() # 接受用户输入的账号密码
user_password = input('请输入您的密码:').strip()
for i in data_source: # 循环取出列表值
if '|'.join((user_account, user_password)) == i: # 将输入拼接为同格式字符串与列表里取出的元素比对
print('登录成功')
break # 登录成功后直接中断,防止进入else,
else:
print('账号或密码错误,请重新输入')
continue # 扫了一遍没扫到直接 中断本次while循环,防止退出功能
break # 结束功能
方法二、
data_source = ['jason|123', 'kevin|321', 'oscar|222']
while True:
user_name=input('请输入您的账号:') # 接受用户输入
user_pasd=input('请输入您的密码')
if '|'.join((user_name,user_pasd)) in data_source: # 直接拼接成同格式判断是否在列表里
print('登录成功')
break # 判断 在列表里直接退出循环
else:
print('账号或密码错误\n请重新输入') # 不成立则重新输入