数据类型内置方法理论

数据类型内置方法理论

内置方法即是每个数据类型自带的功能

数据类型总类:
1.整型 2.浮点型 3.列表型 4.字典型
5.字符型 6.布尔值 7.元组 8.集合

使用数据类型的内置方法统一采用句点符(.)
如:'rain'. 字符串必备的方法()
name = 'rain'
name. 字符串必备的方法()

整型内置方法与操作

关键字
int()

整型就是整数 ,主要用于计算,没有内置方法

类型转换
int('代转换的数据')
字符串中转换的必须是纯数字,出现其他形式立即报错。

进制数转化

十进制的转化

​ 10进制转2进制(0b)

print(bin(101))

​ 运行结果

​ 10进制转8进制(0o)

print(oct(101))
	

​ 运行结果

​ 10进制转16进制(0x)

print(hex(101))

​ 运行结果

​ 其他进制转10进制

​ 需要int(进制标识符+进制数) 或者使用 int(“进制数”,进制位数)

​ 运行结果

浮点型内置方法与操作

1类型转化

关键字
folat()
浮点型类型转换仅可以转换一个小数点的数据,若为多个小数点,那么直接报错。

python自身自身对数字敏感度较低

print(1.1-1)

​ 运行结果

如果需要精确计算需要借助模块numpy......

字符串内置方法与操作

  • 关键字:
    str()

  • 类型转换
    字符串可转换所有数据值

  • 转换的方法

    1.索引取值 : 单个字符 (支持负数)

s1 ='hello world'
print(s1[0])
print(s1[-1])

运行结果

2.切片取值:
多个字符 ,支持负数,切片的顺序默认为从左往右

切片取值时,顺序默认从左往右,当第三个参数赋值为-1时,循序变为从右往左打印,若没有给第三个参数赋值则默认为1。取值的时候是遵循顾头不顾尾的原则。

3间隔方向

第三个值为负数则从反方向输出

print(s1[:])# :输出所有
print(s1[::2])# 针对整个字符串,隔一个取一个
print(s1[0:5:1])# hello 默认是1可以不写
print(s1[0:5:2]) # hlo 索引0到5 隔一个取一个

运行结果

image-20220929183833525

4.统计字符串中字符的个数

.len()统计字符个数,空格也在统计范围内。

5.移除字符首尾指导的字符

运用字符串用内置的方法消除字符时,所表示的不是改变原始数据,而是产生了新的数据,随后输出来调用改变后的数据
还可以进行左消除或者右消除操作:
即在strip前加l或者r
l即left 即左消除
r即right 即右消除

username = input('username>>>:').strip()
username = username.strip()
if username == 'jason':
    print('登录成功')
res = '  jason  '
print(len(res))
print(len(res.strip()))  # 括号内不写 默认移除首尾的空格
res1 = '$$jason$$'
print(res1.strip('$'))  # jason
print(res1.lstrip('$'))  # jason$$
print(res1.rstrip('$'))  # $$jason

6按照指定的字符切割字符串

若出现连续的特征符号,考虑用切割操作。
使用切割字符串时,默认为从左往右切割,若split前由r时,则为从右往左切割
当需要切割次数时,使用maxsplit ,当后面的数值为多少就是需要切割多少次。

info = 'zhangsan|lisi|wangwu|100|200'
res = info.split('|') # 切割字符串的结果是一个列表
print(res,type(res)) #['zhangsan', 'lisi', 'wangwu', '100', '200']
name1,name2,name3,age1,age2=res#zhangsan\lisi\wangwu分别赋值
print(name1,name2,name3,type(name1))
info1=info.split('|',maxsplit=2)# 从左往右 只切一次
print(info1)
info2= info.rsplit('|',maxsplit=1)  # 从右往左 只切一次
print(info2)

运行结果

7.字符串格式化输出

# 1占位符取值
info='my name is{}'.format('张三')# 等价于%s占位
print(info)
# 2 支持索引取值 并且支持重复使用
info1= 'my name is{0} .age is{1}{0}{1}'.format('zhangsan',18)
print(info1)
# 3可以在花括号中使用变量来批量获取数据值。
info2= 'my name is{name} .age is{age}{name}{age}'.format(name='zhangsan',age=16)
print(info2)
#4常用操作
name='zhangsan'
age=18
print(f'my name is{name} .age is{age}{name}{age}')#在格式化输出前加f方法直接获取上述字符内容并进行填写操作,更加简洁

运行结果

用字符串替换格式化输出,有四种方式,与前三种相比较,在输出结果前加f操作更加方便快捷

8字符串大小写相关


info ='Hello WoRLd'
print(info.upper())#全部大写
print(info.lower())#全部小写
print(info.title())# 只有第一个字母大写
print(info.capitalize())#把字母变大写其他全部小写
print(info.swapcase())#把大写字母变小写字母,把小写字母变大写
print(info.index('l'))#找到l输出索引
print(info.find('l'))#找到l输出索引
# print(info.index('a'))#找不到报错
# print(info.find('a'))#找不到返回-1
print(info.find('ll'))#找到ll输出索引

输出结果

9.统计字符串中指定字符出现的次数

 # res = 'sdashdjasdwjjkashdjasdjjqwhasjjahdjjwqhdjjkasdhws'
    # print(res.count('s'))
    # print(res.count('jj'))

相比于循环操作,采用.count()方法能够更加快捷的找到字符串中所需要的数据

10.判断字符串的开头或者结尾

res = 'back say ha ha ha heiheihei'
print(res.startswith('back')) # True
print(res.startswith('b')) # True
print(res.startswith('s')) # False
print(res.endswith('heiheihei'))# True
### print(res.endswith('hei'))  # True
print(res.endswith('h')) # False

采用swith()方法判断字符串的开头或者结尾
swith前为start时是判断开头是否正确 可以是首字母,也可是前面的连续字母
swith前为end 时,则是判断结尾是否正确。可以是尾字母,也可以是最后的连续字母(这里是从左往右)

11.字符串替换

res = 'abcd abcd abcd SB SB SB'
print(res.replace('abcd', 'tony'))  # 从左往右全部替换
print(res.replace('abcd', 'tony', 1))  # 从左往右替换指定个数

采用replace()方法可以将字符串中的代码进行替换(遵循从左往右的原则)
在原数据,替换数据之后填写一个数据值则为替换间隔数(没有填写则默认为0)

12.字符串的拼接

res1 = 'hello'
res2 = 'world'
print(res1 + res2)  # 字符串支持加号拼接
print(res1 * 10)  # 字符串支持乘号重复
print(''.join(['hello', 'world', 'hahaha']))  # join方法拼接
print('|'.join(['hello', 'world', 'hahaha']))  # join方法拼接
# print('$'.join(['jason', 'say', 666]))  # 列表中的数据都必须是字符串类型  报错!!!

字符串的拼接支持+ * 形式的拼接,拼接的结果为没有间隔的数据。
当使用join()方法进行拼接时,join前的单引号中若为|则使用|来将其拼接结果进行分割。若为空则视为没有间隔
列表中的数据都必须是字符串类型否则报错。

13.判断字符串中是否为纯数字

print('123'.isdigit())  # True
print('123a'.isdigit())  # False
print(''.isdigit())  # False

采用isdigit()方法对整型进行判断处理

列表内置方法及操作

1列表类型转化

关键字:
list

类型转换
能够被for循环的数据类型都能转换成列表
print(type(list(数据 )))

方法

l1=['123','123321','4564651','465136']
#1索引取值
print(l1[0],type(l1[0]))
print(l1[-2])
#2切片操作
print(l1[0:3])
#3输出全部数列
print(l1[:])
print(l1[-4:-1])
#间隔数 方向 与字符串讲解一致
print(l1[::2])#间隔
#统计列表中数值的个数
print(len(l1))
l1[1] = 1111
print(l1)
#6列表添加数据值
#6.1:尾部添加数据值
l1.append(12312313213)
print(l1)
l1.append(['jason','jianjian','lili'])
#6.2:任意位置插入数值
l1.insert(0,'aaa')
print(l1)
l1.insert(1,[12,12,13,45])
print(l1)
#6.3扩展列表 合并列表
a1=[11,22,33]
a2=[22,33,44]
print(a1+a2)#[11, 22, 33, 22, 33, 44]
a1.extend(a2)#[11, 22, 33, 22, 33, 44]
print(a1)
for i in a2:
    a1.append(i)
print(a1)#[11, 22, 33, 22, 33, 44]
#7删除列表数据
#7.1通过删除关键字
del l1[0]
print(l1)
#7.2使用remove
l1.remove(121)
print(l1)
#7.3pop
l1.pop(3) # 括号内填写索引值
print(l1)
l1.pop()# 默认尾部弹出数据值
print(l1)
res = l1.pop(3)
print(res)  # 444
 res1 = l1.remove(444)
print(res1)  # None
#8.排序
ss = [54, 99, 55, 76, 12, 43, 76, 88, 99, 100, 33]
ss.sort()  # 默认是升序
print(ss)
ss.sort(reverse=True)
print(ss)  # 改为降序
#9.统计列表中某个数据值出现的次数
print(l1.count(111))
#10.颠倒列表顺序
l1.reverse()
print(l1)

可变类型与不可变类型

python的可变和不可变数据类型:

  1. 可变的:列表、集合、字典(可以进行更改,并且更改后物理地址不会发生改变)

  2. 不可变的:数字、字符串、元组(不可以进行更改,更改后就是一个新的对象了,物理地址发生了变化)

aa='bbaaabb'
bb=[11,22,33]
aa.strip('b')
print(aa) #bbaaabb
a1= bb.append(44)
print(bb)#[11,22,33,44]
print(a1)#none
#可变类型:数据值改变 内存地址不变
a=[11,22,33]
print(a)
print(id(a))
a.append(22)
print(a)
print(id(a))
#不可变类型:数据值改变 内存地址也改变
a2='aahdasdasdasdaa'
print(a2)
print(id(a2))
a2.strip('aa')
print(a2)
print(id(a2))

作业

#基于字符串充当数据库完成用户登录(基础练习)
 #  data_source = 'jason|123'  # 一个用户数据
  # 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123'
name,password=data_source.split("|")
while 1:
    name1=input('输入用户名')
    if name1 == name:
        password1=input('输入密码')
        if password1 == password:
                print('登陆成功')
                break
        else:
                print('密码错误')
    else:
        print('用户名错误')

运行结果

#基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
#data_source = ['jason|123', 'kevin|321','oscar|222']
# 3.基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
k1=1
for a in data_source:
    name1,mima=a.split('|')

    while k1:
        username = input('输入您的用户名')

        if username in name1:
            password = input('输入密码')
            if password in mima:
                print('登陆成功')
                k1=0
            else:
                print('密码错误')
        else:
            print('用户名错误')

运行结果

#利用列表编写一个员工姓名管理系统
#输入1执行添加用户名功能
#输入2执行查看所有用户名功能
#输入3执行删除指定用户名功能
 '''分析 用户输入的不同 可以执行不同的代码'''
#ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
#提示: 循环结构 + 分支结构
 #拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
    # 利用列表编写一个员工姓名管理系统
# 输入1执行添加用户名功能
# 输入2执行查看所有用户名功能
# 输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
# ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
# 提示: 循环结构 + 分支结构
# 拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
admin = []  # 定义一个空列表
while True:
    print('''添加用户请扣1
查看用户请扣2
删除用户请扣3
退出请按4
''')  # 做一个用户界面
    add = input('请输入>>>:')
    if add == '1':
        admin1 = input('输入你要添加用户>>>:')
        admin.append(admin1)
        print('添加成功')
    elif add == '2':
        for i in admin:
            print(i)
    elif add == '3':
        admin2 = input('你要删除哪个>>>:')
        if admin2 in admin:
            admin.remove(admin2)
            print('删除成功')
        else:
            print('没有此用户')
    elif add == '4':
        print('您已结束')
        break
    else:
        print('输入错误,请重新输入')

posted @ 2022-09-29 21:57  冰柠檬檬  阅读(44)  评论(0)    收藏  举报