越来越菜的第x天
今日内容详细
作业讲解
# 1 将登陆功能编写成多用户模式
# # 2定义一个列表 (dita数据)
# dita_list = []
# while True:
# #3 打印程序中所有的功能编号
# print('''1.请注册
# 2.请登录
# 3 查看用户信息''')
# # 4 获取用户执行的功能编号(choice :选择)
# choice = input('请输入功能编号>>>')
# # 5 判断用户要执行的功能
# if choice == '1':
# # 6#获取用户名和密码
# username = input('username>>>:')
# password = input('password')
# # 用户名不能冲突
# for user in dita_list:
# if username == user.split('|')[0]:
# print('用户已存在')
# #7 将用户名和密码拼接
# user_dita = f'{username}|{password}'
# # #8添加列表中
# dita_list.append(user_dita)
# # 9提示用户注册成功
# print(f'{username}注册成功')
# elif choice == '2':
# print('登录>>>')
# # 获取用户和名密码
# username = input('username>>>:')
# password = input('password')
# user_dita2 = f'{username}|{password}'
# for i in dita_list:
# if user_dita2 == i:
# print('登陆成功去')
# break
# else:
# print('用户名或密码错误')
# elif choice == '3':
# print(dita_list)
# else:
# print('你要干嘛还不好好学')
字典的内置方法
1.类型转换
dict()大括号括起来内部有多个元素元素元素逗号隔开元素是k:v键值对
k 不可变(整形··浮点型··字符串)
print({1:234,2:12.33,34.12:50}
{1: 234, 2: 12.33, 34.12: 50}
v 可以是任意行
做一个简单的了解这两种不常用
zqh = dict(name='wyx', password=888, like='eat')
打印结果 {'name': 'wyx', 'password': 888, 'like': 'eat'}
wyx = dict([['name','zzh'],['age','18'],['like','eat']])
print(wyx)
{'name': 'zzh', 'age': '18', 'like': 'eat'}
2.按key取值(键不存在直接报错)
wyx = {'name': 'zzh', 'age': '18', 'like': 'eat'}
print(wyx['like']) 打印结果 eat
设计字典取值推荐以下方式
get.
wyx = {'name': 'zzh', 'age': '18', 'like': 'eat'}
print(wyx.get('name')) # zzh
print(wyx.get('阿巴阿巴'))# none键不存在不报错返回none
print(wyx.get('阿巴阿巴','鸡哥好帅'))第二个参数不写返回none如果写了写什么返回什么

print(wyx.get('name','鸡哥好帅')) #zzh 如果键存在 则不需要使用到第二个参数
修改值·字典也是可变类型
wyx = {'name': 'zzh', 'age': '18', 'like': 'eat'}
wyx['age'] = 'age178'
print(wyx) ##{'name': 'zzh', 'age': 'age178', 'like': 'eat'} 修改键所对应的值 健存在情况下是这样
添加键值对·
wyx['ctx'] = 345
print(wyx) # {'name': 'zzh', 'age': '18', 'like': 'eat', 'ctx': 345} #键不存在新增一个
统计字典键值对个数·
print(len(wyx)) # 4
成员运算只能判断k·
print('name' in wyx) # True
print('zqh'in wyx)# false
删除键值对·(deL) 通用删除方法
del wyx ['name'] 删除放入的k、
wyx.pop(放入k值) pop()——弹出放入的k值
两者区别一个直接把结果删除,,,一个把是结果弹出
wyx.popitem() popitme随机弹出
print(wyx)
获取所有的键 keys
print(wyx.keys()) keys()括号里便不放任何东西
获取所有的值values
print(wyx.values())可以看成列表
所有的键值对items
print(wyx.itmes) 列表套元组
支持for循环
for h in wyx.values():
print(h)
在python2中上述三个方法就是直接返回一个列表
update更新字典
wyx = {'name': 'zzh', 'age': '18', 'like': 'eat'}
wyx.update({'ab':'ba','qh':'yx'})
print(wyx) # {'name': 'zzh', 'age': '18', 'like': 'eat', 'ab': 'ba', 'qh': 'yx'} 健存在就替代键不存在就添加
fromekeys()快速生成字典·
zqh = dict.fromkeys(['name','zzh','阿巴阿巴'],[]
print(zqh)
# {'name': [], 'zzh': [], '阿巴阿巴': []
笔试题 .append(添加元素)
zqh ['name'].append
print(zqh)
# {'name': [213], 'zzh': [213], '阿巴阿巴': [213]}
三个值指向同一个列表无论拿那一个都是整体在变
# setdefault
如果健不存在新增键值对并且有返回结果就是新增的v
# print(wyx.setdefault('kk',66))
# print(wyx)
66
{'name': 'zzh', 'age': '18', 'like': 'eat', 'kk': 66}
如果健存在返回对应的值不做修改
print(wyx.setdefault('name','zzh'))
print(wyx)
# zzh
{'name': 'zzh', 'age': '18', 'like': 'eat'}
元组内置方法
1.类型转换(tuple)
支持for循环的都可以转成元组 集合 字典 字符串 列表
print(tuple('zqh'))
('z', 'q', 'h')
print(tuple([11,22,21,12]))
(11, 22, 21, 12)
print(tuple({'zqh':'wyx'}))
('zqh',)
print(tuple({12,1,2,32,12,3,12}))
(32, 1, 2, 3, 12)
2.元组的特性
# t1 = (11, 22, 33, 44)
# print(type(t1)) # <class 'tuple'>
# t2 = (11)
# print(type(t2)) # int
# t2 = (11.11)
# print(type(t2)) # float
# t2 = ('jason')
# print(type(t2)) # str
"""当元组内只有一个元素的时候 一定要在元素的后面加上逗号"""
一般情况下 我们会习惯性的将所有可以存储多个数据的类型的数据如果内部只有一个元素 也会加逗号
tuple = (21,12,34,43,56,65,78,87,90,9,[21,34])
# 索引取值
# print(tuple[2])
# # 切片操作
# print(tuple[0:2])
# # 间隔
# print(tuple[0:8:3])
# # 统计元组内个数
# print(len(tuple))
# # 成员运算
# print(21in tuple)
# # 统计某个元素出现的次数
# print(tuple.count(34))
# 元组内元素不能‘修改’
tuple[-1].append('dsbdsddsb')
print(tuple)
#(21, 12, 34, 43, 56, 65, 78, 87, 90, 9, [21, 34, 'dsbdsddsb'])
集合内置方法
1.类型转换(set)能支持基本for循环的都可以
print(set())
里边的元素必须是不可变类型
2.两大功能
1.去重
集合内不能出现重复的元素如果出现自动消除(自带去重特性)
如果出现了 会被集合自动去重
# print(set(11)) # 报错
# print(set(11.11)) # 报错
# print(set('jason'))
# print(set([11,22,33,44]))
# print(set({'name':'jason'}))
# print(set((11,22,33)))
# print(set(True)) # 报错
"""集合内元素只能是不可变类型"""
# s1 = {1,1,1,1,1,1,2,2,2,2,2,1,2,3,2,2,1,2,3,2,3,4,3,2,3}
# print(s1) # {1, 2, 3, 4}
# l = ['a', 'b', 1, 'a', 'a']
# s1 = set(l)
# l = list(s1)
# print(l)
2.关系运算
判断两个群体内的差异
eg:共同好友 共同关注 共同点赞
f1 = {'jason', 'kevin', 'tony', 'jerry'} # 小李的好友列表
f2 = {'jason', 'tom', 'jerry', 'jack'} # 小王的好友列表
# 1.求两个人的共同好友
# print(f1 & f2) # {'jerry', 'jason'}
# 2.求小李的单独好友
# print(f1 - f2) # {'kevin', 'tony'}
# 3.求两个人所有的好友
# print(f1 | f2) # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'}
# 4.求两个人各自的好友
print(f1 ^ f2) # {'jack', 'tony', 'tom', 'kevin'}
# 4.一.关系运算
# 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'oscar', 'tony', 'gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
# 2. 求出所有报名的学生名字集合
# 3. 求出只报名python课程的学员名字
# 4. 求出没有同时这两门课程的学员名字集合
#2 print(pythons | linuxs)
# {'gangdan', 'oscar', 'jason', 'tony', 'biubiu', 'ricky', 'kevin'}
#1 print(pythons & linuxs)
# {'gangdan', 'oscar'}
#3 print(pythons-linuxs)
# {'kevin', 'jason', 'biubiu', 'ricky'}
#4 print(pythons ^ linuxs)
{'ricky', 'jason', 'tony', 'biubiu', 'kevin'}
3.去重下列数据字典并保留原来的顺序
# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'lili','age':18,'sex':'male'},
{'name':'jack','age':73,'sex':'male'},
{'name':'tom','age':20,'sex':'female'},
{'name':'lili','age':18,'sex':'male'},
{'name':'lili','age':18,'sex':'male'},
]
list = []
for qh in l:
if qh not in list:
list.append(qh)
print(list)
[{'name': 'lili', 'age': 18, 'sex': 'male'}, {'name': 'jack', 'age': 73, 'sex': 'male'}, {'name': 'tom', 'age': 20, 'sex': 'female'}]
#
.去重列表元素并保留原来的顺序
zqh = ['a', 'b', 1, 'a', 'a']
wyx = []
for i in zqh:
if i not in wyx:
wyx.append(i)
print(wyx)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下