python的学习
基本数据类型及内置方法
数据类型的内置方法简介
内置方法可以简单的理解成是每个数据类型自带的功能(每个人的不同特长)
使用数据类型的内置方法统一采用句点符
数据类型.方法名()
eg:
‘jason’.字符串具备的方法()
name = 'jason'name.字符串具备的方法()
ps:如何快速查看某个数据类型的内置方法
借助于编辑器自动提示
我们在学习内置方法的过程中还会穿插一些其他用法
eg:索引取值 按k取值
整型相关方法
1.关键字
int()
2.整型就是整数 主要用于计算 没有内置方法
3.类型转换
int(待转换的数据)
# 类型转换
age = input()
age = int(age)
print(type(int('123'))) # 字符串 内部是纯数字情况 可以转换
print(type(int('123a321'))) # 字符串里面必须是纯数字才可以转换
print(type(int('123.33'))) # 小数点也不行
# 进制转换
"""
二进制 八进制 十进制 十六进制
"""
'''十进制转其他进制'''
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
浮点型相关方法
# 1.关键字float
# 2.类型转换print(float('123')) # 123.0print(type(float('123'))) # floatprint(float('123a123'))print(float('123.12')) # 可以识别一个小数点print(float('123.123.1.2.2.2.2.2.2')) # 不可以
# 3.针对布尔值的特殊情况print(float(True)) # 1.0print(float(False)) # 0.0print(int(True)) # 1print(int(False)) # 0
字符串相关方法
# 1.索引取值:单个字符 支持负数
print(s1[0]) # h
print(s1[-1]) # !
print(s1[-2]) # n
2.切片取值:多个字符 支持负数 切片的顺序默认从左往右
print(s1[0:3]) # hel 从索引0的位置开始切到索引2的位置 顾头不顾尾
print(s1[-1:-4]) # 切片的顺序默认从左往右
print(s1[-1:-4:-1]) # !no 可以通过第三个参数的正负一 控制方向
print(s1[-4:-1]) # son 顾头不顾尾
3.间隔/方向
print(s1[:]) # 所有
print(s1[::2]) # 针对整个字符串 隔一个取一个
print(s1[0:5:1]) # hello 默认1可以不写
print(s1[0:5:2]) # hlo
# 4.统计字符串中字符的个数
print(len(s1)) # print(len('hello jason!')) 12 空格也算字符
# 5.移除字符串首尾指导的字符
username = input('username>>>:')
if username == 'jason': # 'jason ' == 'jason'print('登录成功')
else:print('你不是jason!')
name = ' jason '
print(len(name)) # 9
print(name.strip(), len(name.strip())) # jason 5
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 rightusername = input('username>>>:')
username = username.strip()
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']
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.字符串大小写相关
s2 = 'HeLLo Big BAby 666 你过的还好吗'
print(s2.lower()) # hello big baby 666 你过的还好吗
print(s2.upper()) # HELLO BIG BABY 666 你过的还好吗
print(s2.islower()) # 判断字符串中所有的字母是否是全小写 False
print(s2.isupper()) # 判断字符串中所有的字母是否是全大写 False
print('aaa'.islower()) # True
print('AAA'.isupper()) # Truecode = 'JaSon666'
print('这是网页给你返回的随机验证码:%s' % code)
confirm_code = input('请输入验证码>>>:')code_upper = code.upper() # 将网页返回的验证码转大写
confirm_code_upper = confirm_code.upper() # 将用户填写的验证码转大写
if code_upper == confirm_code_upper: # 统一转大写 或者小写 再做比对
if confirm_code.upper() == code.upper(): # 统一转大写 或者小写 再做比对print('验证码正确')
else:print('验证码错误')# 8.字符串的格式化输出
# 方式1: 等价于%s占位 没有什么优势
res1 = 'my name is {} my age is {}'
print(res1.format('jason', 18))
# 方式2: 支持索引取值 并且支持重复使用
res2 = 'my name is {0} my age is {1} {0} {1} {1} {1}'
print(res2.format('jason', 18))
# 方式3: 支持关键字取值(按k取值) 并且支持重复使用
res3 = '{name} {name} {age} my name is {name} my age is {age}'
print(res3.format(name='jason', age=18))
# 方式4:推荐使用(******)
name = 'jason'
age = 18
print(f'my name is {name} my age is {age} {name} {age}')# 9.统计字符串中指定字符出现的次数
res = 'sdashdjasdwjjkashdjasdjqwhasjdjahdjwqhdjkasdhwsdaadadadadad'
print(res.count('j'))
print(res.count('ad'))# 10.判断字符串的开头或者结尾
res = 'jason say ha ha ha heiheihei'
print(res.startswith('jason'))
print(res.startswith('j'))
print(res.startswith('b'))
print(res.endswith('heiheihei'))
print(res.endswith('hei'))
print(res.endswith('h'))# 11.字符串的替换
res = 'jason jason jason SB SB SB'
print(res.replace('jason', 'tony')) # 从左往右全部替换
print(res.replace('jason', 'tony', 1)) # 从左往右替换指定个数# 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])) # 列表中的数据都必须是字符串类型 报错!!!# 13.判断字符串中是否是纯数字
print('123'.isdigit()) # True
print('123a'.isdigit()) # False
print(''.isdigit()) # False# 14.查找某个字符对应的索引值
res = 'hello world jason'
print(res.index('d')) # 10
print(res.find('d')) # 10
'''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
列表相关方法
1.关键字
list
2.类型转换
print(type(list(123)))
print(type(list(123.22)))
print(type(list('123243jasdsad')), list('123243jasdsad'))
print(type(list({'name':"jason",'pwd':123})), list({'name':"jason",'pwd':123}))
"""能够被for循环的数据类型都可以转换成列表"""
3.需要掌握的方法
print(type(list(123)))
print(type(list(123.22)))
print(type(list('123243jasdsad')), list('123243jasdsad'))
print(type(list({'name':"jason",'pwd':123})), list({'name':"jason",'pwd':123}))
"""能够被for循环的数据类型都可以转换成列表"""
l1 = ['jason', 'kevin', 'oscar', 'tony']
# 1.索引取值
print(l1[0])
print(l1[-1])
# 2.切片操作
print(l1[0:3])
print(l1[:])
print(l1[-4:-1])
# 3.间隔/方向
print(l1[::2])
# 4.统计列表中数据值的个数
# 1.统计列表中数据值的个数
print(len(l2))
'''增删改查:占据了程序的90%以上的核心操作'''
# 2.增
# 2.1 尾部追加数据值append() 括号内无论写什么数据类型 都是当成一个数据值追加
res = l1.append('owen')
print(res) # None 空
print(l1)
s1 = '$hello$'
res1 = s1.strip('$')
print(res1)
print(s1)
l1.append([1, 2, 3, 4, 5])
print(l1)
# 2.2 任意位置插入数据值insert() 括号内无论写什么数据类型 都是当成一个数据值插入
l1.insert(0, '插队')
print(l1)
l1.insert(0, [1, 2, 3])
print(l1)
# 2.3 扩展列表
new_l1 = [11, 22, 33, 44, 55]
new_l2 = [1, 2, 3] # [1, 2, 3, 11, 22, 33, 44, 55]
# 方式1
for i in new_l1:new_l2.append(i)
print(new_l2)
# 方式2
print(new_l1 + new_l2)
# 方式3(推荐使用)
new_l1.extend(new_l2) # 括号里面必须是支持for循环的数据类型 for循环+append()
print(new_l1)
# 3.查询数据与修改数据
print(l1)
print(l1[0])
print(l1[1:4])
l1[0] = 'jasonNB'
print(l1)
# 4.删除数据
# 4.1 通用删除策略
del l1[0] # 通过索引即可
print(l1)
# 4.2 指名道姓删除
res = l1.remove('jason') # 括号内必须填写明确的数据值 就地正法
print(l1, res)
# 4.3 先取出数据值 然后再删
res = l1.pop() # 默认取出列表尾部数据值 然后再删 先蹂躏一下再删
print(l1, res)
res = l1.pop(0)
print(res, l1)
# 5.查看数据值对于的索引值
print(l1.index('jason'))
# 6.统计某个数据值出现的次数
l1.append('jason')
l1.append('jason')
l1.append('jason')
print(l1.count('jason'))
# 7.排序
l2.sort() # 升序
l2.sort(reverse=True) # 降序
print(l2)
# 8.翻转
l1.reverse() # 前后跌倒
print(l1)
# 9.比较运算
new_1 = [99, 11]
new_2 = [11, 22, 33, 44]
print(new_1 > new_2) # True 是按照位置顺序一一比较
new_1 = ['a', 11]
new_2 = [11, 22, 33, 44]
print(new_1 > new_2) # 不同数据类型之间默认无法直接做操作
new_1 = ['a', 11] # a 97
new_2 = ['A', 22, 33, 44] # A 65 后续课程讲解 字符编码知识
print(new_1 > new_2) # True
new_1 = ['你', 11] # a 97
new_2 = ['我', 22, 33, 44] # A 65 后续课程讲解 字符编码知识
print(new_1 > new_2) # False
元组内置方法
# 类型转换
print(tuple(123))
print(tuple(123.11))
print(tuple('hello'))
'''支持for循环的数据类型都可以转元组'''
t1 = () # tuple
print(type(t1))
t2 = (1) # int
print(type(t2))
t3 = (11.11) # float
print(type(t3))
t4 = ('jason') # str
print(type(t4))
"""
当元组内只有一个数据值的时候 逗号不能省略
如果省略了 那么括号里面是什么数据类型就是什么数据类型
建议:编写元组 逗号加上 哪怕只有一个数据(111, ) ('jason', )
ps:以后遇到可以存储多个数据值的数据类型 如果里面只有一个数据 逗号也趁机加上
"""t1 = (11, 22, 33, 44, 55, 66)
# 1.索引相关操作
# 2.统计元组内数据值的个数
print(len(t1))
# 3.查与改
print(t1[0]) # 可以查
t1[0] = 222 # 不可以改
"""元组的索引不能改变绑定的地址"""
t1 = (11, 22, 33, [11, 22])
t1[-1].append(33)
print(t1) # (11, 22, 33, [11, 22, 33])
字典内置方法
1.字典内k:v键值对是无序的
# 2.取值操作
print(info['username']) # 不推荐使用 键不存在会直接报错
print(info['xxx']) # 不推荐使用 键不存在会直接报错
print(info.get('username')) # jason
print(info.get('xxx')) # None
print(info.get('username', '键不存在返回的值 默认返回None')) # jason
print(info.get('xxx', '键不存在返回的值 默认返回None')) # 键不存在返回的值 默认返回None
print(info.get('xxx', 123)) # 123
print(info.get('xxx')) # None
# 3.统计字典中键值对的个数
print(len(info))
# 4.修改数据
info['username'] = 'jasonNB' 键存在则是修改
print(info)
# 5.新增数据
info['salary'] = 6 键不存在则是新增
print(info) # {'username': 'jason', 'pwd': 123, 'hobby': ['read', 'run'], 'salary': 6}
# 6.删除数据
# 方式1
del info['username']
print(info)
# 方式2
res = info.pop('username')
print(info, res)
# 方式3
info.popitem() # 随机删除
print(info)
# 7.快速获取键 值 键值对数据
print(info.keys()) # 获取字典所有的k值 结果当成是列表即可dict_keys(['username', 'pwd', 'hobby'])
print(info.values()) # 获取字典所有的v值 结果当成是列表即可dict_values(['jason', 123, ['read', 'run']])
print(info.items()) # 获取字典kv键值对数据 组织成列表套元组dict_items([('username', 'jason'), ('pwd', 123), ('hobby', ['read', 'run'])])
# 8.修改字典数据 键存在则是修改 键不存在则是新增
info.update({'username':'jason123'})
print(info)
info.update({'xxx':'jason123'})
print(info)
# 9.快速构造字典 给的值默认情况下所有的键都用一个
res = dict.fromkeys([1, 2, 3], None)
print(res)
new_dict = dict.fromkeys(['name', 'pwd', 'hobby'], []) # {'name': [], 'pwd': [], 'hobby': []}
new_dict['name'] = []
new_dict['name'].append(123)
new_dict['pwd'].append(123)
new_dict['hobby'].append('read')
print(new_dict)res = dict.fromkeys([1, 2, 3], 234234234234234234234)
print(id(res[1]))
print(id(res[2]))
print(id(res[3]))
# 10.键存在则获取键对应的值 键不存在则设置 并返回设置的新值
res = info.setdefault('username', 'jasonNB')
print(res, info)
res1 = info.setdefault('xxx', 'jasonNB')
print(res1, info)
集合内置方法
'''去重'''
s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
print(s1) # {1, 2, 3, 4, 5, 12}l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
s2 = set(l1)
l1 = list(s2)
print(l1)
'''关系运算'''
print({1,2,[1,2,3]})
print({1,2,{'name':'jason'}})s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
print(s1) # {1, 2, 3, 4, 5, 12}l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
s2 = set(l1)
l1 = list(s2)
print(l1)# 模拟两个人的好友集合
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
# 1.求f1和f2的共同好友
print(f1 & f2) # {'jason', 'jerry'}
# 2.求f1/f2独有好友
print(f1 - f2) # {'oscar', 'tony'}
print(f2 - f1) # {'lili', 'kevin'}
# 3.求f1和f2所有的好友
print(f1 | f2) # {'jason', 'kevin', 'lili', 'oscar', 'jerry', 'tony'}
# 4.求f1和f2各自独有的好友(排除共同好友)
print(f1 ^ f2) # {'kevin', 'lili', 'tony', 'oscar'}
# 5.父集 子集
s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {3, 2, 1}
print(s1 > s2) # s1是否是s2的父集 s2是不是s1的子集
print(s1 < s2)
练习
# 1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
# 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
data_source = 'jason|123'
while True:username = input('请输入用户名>>>:').strip()password = input('请输入密码>>>:').strip()real_name ,real_password = data_source.split('|')if username == real_name and password == real_password:print('欢迎登录')breakelse:print('用户名或者密码错误')
# 2.基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
while True:username = input('请输入用户名>>>:').strip()password = input('请输入密码>>>:').strip()real_name , real_password = data_source.split('|')if username == real_name and password == real_password:print('欢迎登录')breakelse:print('用户名或密码错误')
#2.使用循环结构
while True:print(info)
#3 获取指令并判断choice = input('请输入指令>>>:').strip()if choice == '1':
#4 获取用户名并判断用户是否存在username = input('请输入用户名>>>').strip()if username not in name_list:print('添加成功')name_list.append(username)else:print('用户已经存在')elif choice == '2':
#5.再次获取用户名,根据用户名判断是否在名单内并查询信息username = input('请输入用户名>>>:')for name in name_list:print(f"""---------------info--------------username:{name}---------------------------------""")elif choice == '3':
#6.获取需要删除的用户,判断是否在名单内del_name = input('请输入需要删除的用户名>>>:')if del_name not in name_list:print('此用户不存在')continuename_list.remove(del_name)print(f'用户名{del_name}删除成功')
#7.如果不在continueelse:print('输入错误')
# 2.去重下列列表并保留数据值原来的顺序
# eg: [1, 2, 3, 2, 1]
# 去重之后[1, 2, 3]
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
count = [] # 1.定义一个空列表
for i in l1:# 2.循环含有重复数据值的列表if i not in count: # 3.判断当前数据值是否存在于新列表中count.append(i)4.如果不在则追加到新列表
print(count)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
