P51 字典

'''
特点:键值对
结构:{键1:值,键2:值,键3;值}
字典:{}
元素:键值对  注意:键是唯一的,值是允许重复的下标 或者 切片 ---> 没有1.添加元素:
字典名[key] = value
注意:key是唯一的,所以在添加的时候如果出现同名的key,后面key对应的value则替换原来的2.修改value值
字典名[key] = value关键看"键":如果字典中不存在键,则是添加如果字典中存在键,则是修改
'''
dict1 = {}
print(type(dict1))dict1['name'] = '阿泽'
print(dict1)
# {'name': '阿泽'}dict1['name'] = '阿龙'
print(dict1)dict1['age'] = 20
dict1['sex'] = '男'
print(dict1)# 改变年龄
# 键 可以添加 删除,但无法修改,只能修改键后面的值
dict1['age'] = 21
print(dict1)#
dict1['score'] = 90'''
练习:
book = {}
书名,价格,作者,出版社
促销:价格折扣 8折
打印最终字典中的内容
'''book = {}
book['name'] = '书名'
book['price'] = 10
book['出版社'] = '美滋滋出版社'
print(book)
# 修改价格
book['price'] *=0.8 # book['price']=book['price']*0.8
print(book)

P52-53 字典删除

'''
字典删除:
pop(key):根据key实现删除,删除的是键值对。返回值key对应的value
popitem(): 返回值:(key,value),从后往前删除
clear():清空系统的删除:
del
'''
book = {'name': '书名', 'price': 10, '出版社': '美滋滋出版社'}
# 表示一本书的信息
# 清空
# book.clear()
# print(book)# pop 删除:根据key实现删除,删除的是键值对。返回值key对应的value
# r = book.pop('出版社')
# print(r)
# print(book)# popitem() 返回值:(key,value) 从后往前删除
r = book.popitem()
print(r)  # ('出版社', '美滋滋出版社')
print(book)  # {'name': '书名', 'price': 10}r = book.popitem()
print(r)  # ('price', 10)
print(book)  # {'name': '书名'}book = {'name': '书名', 'price': 10, '出版社': '美滋滋出版社'}
del book['price'] #类似于pop(key)
print(book)# del book
# print(book) #book is not defined'''
book = {}
书名,价格,作者,出版社
借了:
books = [{},{}]删除:每一本里面的出版社最终打印books
'''
books = [{'书名':'《三体》','价格':20,'作者':'刘慈欣','出版社':'**出版社'},{'书名':'《流浪地球》','价格':18,'作者':'刘慈欣','出版社':'###出版社'}]
for book in books:book.pop('出版社')print(books)

P54 字典遍历和获取

'''
遍历和查询:
list.index() list.count() in获取:
dict.get(key):根据key获取value值
dict[key]:根据key获取value值区别:get(key) 里面的key如果不存在则返回None,同时get(key,默认值) 可以设置默认值dict[key] 报error错误如果使用for..in直接遍历字典, 取出的是字典的key值
for i in book:print(i)获取字典中所有的value值: 字典.values()  就会将所有的值存放到一个列表中
for v in book.values():print(v)获取字典中所有的key值: 字典.keys()  就会将所有的值存放到一个列表中
for v in book.keys():print(v)获取键值对: 字典.items()---> [{key,value),(),(),...]
for k,v in book.items:print(k,v)
'''book = {'书名': '《三体》', '价格': 20, '作者': '刘慈欣'}
# 根据key得到value值
value = book.get('书名1')  # 取出的不是书名本身,而是对应的值
# '书名1'不存在,不会报错
print(value)print(len(book))  # 3对# value = book['书名1']
# '书名1'不存在,会报错
# print(value)value = book.get('书名1', '找不到书名1,返回默认值')# list1 = [1,4,7,8,9]
# for i in list1:
#     print(i)book = {'书名': '《三体》', '价格': 20, '作者': '刘慈欣'}
# 如果使用for..in直接遍历字典, 取出的是字典的key值
for i in book:print(i)
'''
书名
价格
作者
'''# 获取字典中所有值
book = {'书名': '《三体》', '价格': 20, '作者': '刘慈欣'}
print(book.values())  # dict_values(['《三体》', 20, '刘慈欣'])
print(list(book.values()))  # ['《三体》', 20, '刘慈欣']for v in book.values():print(v)print(book.keys())  # dict_keys(['书名', '价格', '作者'])print(book.items())for i in book.items():  # 拿到的是元组print(i)for k, v in book.items():print(k, v)
for k, v in book.items():print(k)print(v)# setdefault 只能添加,不能修改
book.setdefault('出版社', '人民教育出版社')  # 类似: book[key]=value
print(book)
# {'书名': '《三体》', '价格': 20, '作者': '刘慈欣', '出版社': '人民教育出版社'}
book.setdefault('出版社', '人民出版社')  # 类似: book[key]=value
print(book)
# {'书名': '《三体》', '价格': 20, '作者': '刘慈欣', '出版社': '人民教育出版社'}dict1 = {'a': 10, 'b': 20}
book.update(dict1)
print(book)
# {'书名': '《三体》', '价格': 20, '作者': '刘慈欣', '出版社': '人民教育出版社', 'a': 10, 'b': 20}# 两个字典之间不能用加号,update可以实现两个字典的合并
# print(dict1+book)
# TypeError: unsupported operand type(s) for +: 'dict' and 'dict'print(book)# fromkey 创建一个新的字典,用你给定的列表里面的key作为默认值
result = dict.fromkeys(['a', 'b'])  # {'a': None, 'b': None}
print(result)result = dict.fromkeys(['a', 'b'], 10)  # {'a': 10, 'b': 10}
print(result)result = dict.fromkeys(['a', 'b'], [1, 10])  # {'a': 10, 'b': 10}
print(result)'''
books = [] 框 能放多本书
书:{}
书名 作者 价格添加3本书:
1.添加书   不能添加同名书籍    [{'书名','aaa',...},{'书名','aaa',...}]
'''

P55-56 练习&练习讲解

# if value in 字典  是'不存在'的
dict1={'a':10,'b':20}
if 'a' in dict1:print('在')
else:print('不在')if 10 in dict1:print('在')
else:print('不在')m1, m2 = input('请输入:').split(' ')
print(m1, m2)  # hello worldresult = input('请输入:').split(' ')
print(result)  # ['hello', 'world']
'''
books = [] 框 能放多本书
书:{}
书名 作者 价格添加3本书:
1.添加书   不能添加同名书籍    [{'书名','aaa',...},{'书名','aaa',...}]
'''
books = []while True:if len(books) == 3:breakname = input('输入书名:')for book in books:# if name in book.values(): # [{'a':10,'b':20},{'a':11,'b':10}] 这种情况也有bug,因为value包括了a,b后面的值# print(type(book))if name == book.get('name'):print('重复书名,重新输入')breakelse:author = input('作者')price = float(input('价格'))books.append({'name':name,'author':author,'price':price})
print(books)

P57 集合简介和集合内容添加

'''
集合:set
特点:没有重复,无序的
符号:{}  {元素,元素,元素,..}---->集合{}  {key:value,...}---->字典
定义集合:
'''# 当花括号里面不是键值对,那类型则为集合
set1 = {'张三'}
print(type(set1))  # <class 'set'>#
list1 = [1, 3, 5, 6, 7, 8, 8, 3, 1]set2 = set(list1)
print(set2)  # {1, 3, 5, 6, 7, 8} 重复元素去除set3 = {}
print(type(set3))  # <class 'dict'>set4 = set()  # 空集合set
print(type(set4))  # <class 'set'>print(len(set4))  # 0# 添加元素
set4.add('1')
print(set4)set4.add('2')
print(set4)set4.add('3')
print(set4)# append extend --->list
# add    update --->set
# list: 有序,允许重复
# set:无序,不允许重复set1.update(set4)
print(set1)
print(set4)set4.add('3')   #如果出现重复元素,不允许添加--print出来无差别
print(set4)

P58 集合练习

'''
集合:set
特点:没有重复,无序的
符号:{}  {元素,元素,元素,..}---->集合{}  {key:value,...}---->字典
定义集合:
'''
import random# 当花括号里面不是键值对,那类型则为集合
set1 = {'张三'}
print(type(set1))  # <class 'set'>#
list1 = [1, 3, 5, 6, 7, 8, 8, 3, 1]set2 = set(list1)
print(set2)  # {1, 3, 5, 6, 7, 8} 重复元素去除set3 = {}
print(type(set3))  # <class 'dict'>set4 = set()  # 空集合set
print(type(set4))  # <class 'set'>print(len(set4))  # 0# 添加元素
set4.add('1')
print(set4)set4.add('2')
print(set4)set4.add('3')
print(set4)# append extend --->list
# add    update --->set
# list: 有序,允许重复
# set:无序,不允许重复set1.update(set4)
print(set1)
print(set4)set4.add('3')  # 如果出现重复元素,不允许添加--print出来无差别
print(set4)'''
产生5组(不允许重复),字母和数字组成4位验证码
最终打印此五组验证码
'''
# import random
#
# # 集合不重复
# code_set = set()
#
# s = 'qwertyuiopasdfghjklzxcvbbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
# while True:
#     code = ''
#     for i in range(4):
#         r = random.choice(s)
#         code += r
#     # 将code添加到set中
#     code_set.add(code)
#     # 判断长度
#     if len(code_set) == 5:
#         break
#
# print(code_set)import random
code_set=set()s = 'qwertyuiopasdfghjklzxcvbbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
while True:code1=''# 生成4位由字母数字组成的验证码for i in range(4):# r = random.choice(s)index = random.randint(0,len(s)-1)code1+=s[index]code_set.add(code1)if len(code_set)==5:breakprint(code_set)

P59 总结讲过的类型

set1 = {'dn34', 'Ad0f', 'DFV3', 'FVlo', '23lS'}set1.remove('DFV3')
print(set1)  # {'dn34', '23lS', 'Ad0f', 'FVlo'}
# remove里的内容不存在,则报错set1.discard('dfv4')
print(set1)  # discard里面的内容不存在,不删除也报错# del 实现删除
# del set1# set1.clear()
# set1.add('adei')
# print(set1)# 随机删除集合中的任意元素
set1.pop()
print(set1)# 集合; 交集intersection 并集union 差集differenceset2 = {1,2,3,4,5}
set3 = {3,4,5,6,7,8,9}# 了解
result = set2.intersection(set3)    # & 交集
print(result)result = set2.union(set3)
print(result)result= set2.difference(set3)   # | 并集
print(result)   # {1, 2}result = set3.difference(set2)  # - 差集
print(result)   # {8, 9, 6, 7}# + - *
print(set2 & set3)
print(set2|set3)
print(set3-set2)
  • list: 允许重复,有序 有下标 []
  • tuple:允许重复,里面的元素不能增加删除修改,只能查看 ()
  • dict:键值对存在 键:唯一 值:允许重复 ()
  • set:不允许重复,无序 {}

类型转换:

list —> tuple,set(长度有可能发生改变)

tuple —> list,set

set —> list , tuple

dict —> list , tuple , set 但是只是将字典的键放到了[],(),{}

list -×-> dict 一般不能转,特殊情况可以转

list1 = [('a',10),('b',20),('c',30)]
print(dict(list1))

P60 综合练习

'''
图书管理系统
至少5本书
library = [{'bookname':'xxx','author':'xxx','price':1000},{},{}]1.借书
2.还书
3.查询(书名/作者)
4.查看所有
5.退出
'''

import time#
library = [{'bookname': '西游记', 'author': '吴承恩', 'price': 100, 'number': 40},{'bookname': '红楼梦', 'author': '曹雪芹', 'price': 300, 'number': 40},{'bookname': '水浒传', 'author': '施耐庵', 'price': 200, 'number': 40},{'bookname': '天珠变', 'author': '唐三少', 'price': 230, 'number': 0},{'bookname': '西游记', 'author': '罗贯中', 'price': 310, 'number': 40}
]
# # 存储所有书名
# bookName_list=[]
# for book in library:
#     name = book.get('bookname')
#     bookName_list.append(name)
# print(bookName_list)
name_list = []
for book in library:name = book.get('bookname')name_list.append(name)
print(name_list)author_list = []
for book in library:author = book.get('author')author_list.append(author)
print(author_list)while True:choice = int(input('\n1.借书 \n2.还书 \n3.查询 \n4.查看所有 \n5.退出\n'))if choice == 1:  # 选择借书功能print('--借书--')# 输入书名-->判断有无这本书-->存在多本/一本  注意number要改变# 输入书名flag = Truewhile flag:book_list = []  # 用于存储所有要借的书籍名称book_name = input('输入书名:')  # 输入要借书籍名称for book in library:  # 遍历所有书籍,把所有满足该名称且有库存的书籍写入book_listif book_name == book['bookname'] and book['number'] > 0:book_list.append(book)print(book_list)if len(book_list) > 1:  # 有重名,输入对应的作者book_author = input('输入作者:')for book in library:if book_name == book['bookname'] and book_author == book['author']:book['number'] -= 1print('成功借阅%s的%s' % (book_author, book_name))flag = Falsebreakelse:print('抱歉没有这本书')lend_choice = input('选择退出借书(n)or重新输入(y)')# 重新输入if lend_choice == 'y':continueelse:print('正在退出系统')time.sleep(2)print('成功退出')flag = Falsebreakelif len(book_list) == 1:  # 唯一一本符合要求的书for book in library:if book_name == book['bookname']:book['number'] -= 1print('成功借阅%s' % book_name)flag = Falseelif choice == 2:# print(my_book)# 输入书名 输入作者# 判断是否存在--》检查书名、作者 或 还书成功print('--还书--')flag = Truewhile flag:bookname = input('请输入书名:')author = input('请输入作者:')for book in library:if bookname == book['bookname'] and author == book['author']:book['number'] += 1print('还书成功')flag = Falsebreakelse:print('输入的书名或作者错误,还书失败!请重新输入')breakelif choice == 3:print('查询')# 1. 书名 ---> 根据书名查询# 2. 作者----> 根据作者查询# search = input('书名|作者')   search ---> 比较2次search = input('输入作者或书名')if search in name_list:print('书名'.center(10),'作者'.center(10),'库存'.center(10))# 已知书名,要取出作者for book in library:if search==book['bookname']:print(book['bookname'].center(10),book['author'].center(10),str(book['number']).center(10))# 数字不能使用center--所以把数字改成字符类型elif search in author_list:print('书名'.center(10), '作者'.center(10), '库存'.center(10))# 已知书名,要取出作者for book in library:if search == book['author']:print(book['bookname'].center(10),book['author'].center(10),str(book['number']).center(10))'''if search in namelist:passelif search in authorlist:pass'''elif choice == 4:print('查看所有')print('书名'.center(10), '作者'.center(10), '库存'.center(10))for book in library:print(book['bookname'].center(10), book['author'].center(10), str(book['number']).center(10))else:print('--退出系统--')flag = Falsebreak

python P51-60相关推荐

  1. 56岁潘石屹下定决心学Python,60多岁程序语言之父们还在敲代码,你还敢懈怠吗?...

    十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 比你成功的人,比你还努力. 上周,SOHO中国董事长.地产大亨潘石屹,56岁生日当天发布微博宣布进军编程语言Python. 紧接着第二天,又 ...

  2. 56岁潘石屹下定决心学Python,60多岁程序语言之父们还在敲代码,你还敢懈怠吗?

    十三 发自 凹非寺 本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载,转载请联系出处 比你成功的人,比你还努力. 上周,SOHO中国董事长.地产大亨潘石屹,56岁生日当天发布微博宣布进军 ...

  3. 美国 AI 博士:什么都不会怎么学 Python?60 天知识脉络图,快速挑战 Python 全栈

    我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的: 先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, ...

  4. python倒计时60,Python微项目分享之重要事件倒计时

    作者:JiawuZhang出品:JiawuLab(ID:jiawulab) 微项目系列是JiawuLab原创栏目,每期选取一个自创项目或发现有趣的项目,进行代码.逻辑分析,达到python学习目的. ...

  5. 【python】60行代码实现给头像戴上圣诞帽(opencv)

    文章目录 1. 成果展示 2. 项目简介 3. 项目地址 4. 预备知识 5. 完整代码 6. 必要组件 7. 圣诞素材 8. 引用参考 9. 软件下载 1. 成果展示 2. 项目简介 原理很简单,就 ...

  6. Python基础教程(crossin全60课)

    [ Python 第 第 1 1  课 ] 安装 ........................................................................... ...

  7. python入门基础60讲

    [Python 第1课]安装... 6 [Python 第2课]print. 7 [Python 第3课]IDE. 10 [Python 第4课]输入... 12 [Python 第5课]变量... ...

  8. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  9. python实现简单爬虫百度首页_python使用百度进行爬虫简单学习例子

    root@kali:~/py# python table.py list: ['http://www.baidu.com/s?wd=python&pn=10&oq=python& ...

  10. 良心直播!看完你的Python入门基础就妥了!

    国内疫情已经稳定下来,但是疫情这让年后跳槽似乎变得的更加艰难,但是这个时候也正好是蓄力的时候!! 回顾之前,我们接触到了数千位计算机专业的应届大学生,转行或者学习第二语言的同学,发现他们身上普遍存在着 ...

最新文章

  1. Oracle 启动监听命令
  2. 艾伟_转载:[一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper
  3. 所谓语音合成 是计算机根据语言学,计算语言学完整1
  4. 宏定义中有浮点数_GEO是什么?还可以定义新的数据类型吗?
  5. mybatis源码学习篇之——执行流程分析
  6. raspberry nas_使用Raspberry Pi NAS托管您自己的云
  7. android jni返回bitmap,JNI 层 Bitmap 转 OpenCV Mat
  8. 随想录(中断中真的不能上下文切换吗)
  9. 动态控制C4C UI元素的显示和隐藏
  10. java中chl列表_Java 同步框架 AQS 深入分析
  11. holtek c语言,合泰单片机c语言教程
  12. 《SSCOM串口/网络数据调试器》
  13. Glide加载图片缩放模式
  14. iOS 的一种设计模式 类别 catagory
  15. 软件已删除,但在控制面板里还有,就是删不掉.怎么办?
  16. 服务器网络群搭建(以华为云为例)
  17. 程序员工作压力大,为什么还这么多人想做程序员?是因为喜欢吗?
  18. U盘插入提示使用驱动器光盘之前需要格式化
  19. 智能环境监控系统解决方案及应用背景
  20. babel5升级到babel6总结

热门文章

  1. Go日志-Uber开源库zap使用
  2. C++重学之路 5 控制语句和逻辑运算符
  3. linux zfs raid,揭秘ZFS RAID世界-高性能ZFS RAID10Z0
  4. pytorch 中维度(Dimension)概念的理解
  5. 二更!结合我的经验来看:Python到底该怎么学?拿下这些教程如有神助!
  6. “评论实名制”,10月1日即将实施
  7. Docker 私有仓库
  8. 十年的成长历程!十年的回顾!
  9. 威胁情报基础:爬取、行走、分析(Part 2)
  10. 烤仔的朋友们丨大饼破万,以太飞天,牛来了还是狼来了?