python教程_小白入门15/2020/8/26

学习目标

文章目录

  • python教程_小白入门15/2020/8/26
    • p102 作业讲解1
    • P103 作业讲解2
    • P104 集合的基本使用
    • P105 集合的运算符的使用
    • P 106 eval和json的使用

p102 作业讲解1

# 作业讲解
# 1.声明一个字典保存学生的信息,学生信息中包括:姓名,年龄,成绩,电话,性别(男,女,不明)
# student = {'name': 'zhangsan', 'age': 18, 'score': 98, 'tel': '13865465464', 'gender': 'female'}# 2.声明一个列表,在列表中保存6个学生的信息()
students = [{'name': 'zhangsan', 'age': 18, 'score': 98, 'tel': '13865465464', 'gender': 'female'},{'name': 'lisi', 'age': 22, 'score': 95, 'tel': '17844477854', 'gender': 'male'},{'name': 'tom', 'age': 19, 'score': 98, 'tel': '13146246423', 'gender': 'unknow'},{'name': 'jack ', 'age': 20, 'score': 58, 'tel': '19185466845', 'gender': 'male'},{'name': 'tony', 'age': 15, 'score': 52, 'tel': '18154447813', 'gender': 'female'},{'name': 'zhangliang', 'age': 17, 'score': 89, 'tel': '15698665552', 'gender': 'unknow'}
]
# # 统计不及格学生的个数-----------------------------------------------------------
# count1 = 0
# for student in students:
#     if student['score'] < 60:
#         count1 += 1
# print('不及格的学生的个数有%d个' % count1)
# # 不及格的学生的个数有2个
# # 打印不及格学生的名字和对应的成绩------------------------------------------------
# for student in students:
#     if student['score'] < 60:
#         print('不及格的学生是%s,成绩是%d' % (student['name'], student['score']))
#         # 用d表示整数,s表示字符串,多个参数时尽量使用括号
#         # 不及格的学生是jack, 成绩是58
#         # 不及格的学生是tony, 成绩是52
# # 统计未成年学生的个数---------------------------------------------------------
# count2 = 0
# for student in students:
#     if student['age'] < 18:
#         count2 += 1
# print('未成年的学生的个数为%d' % count2)
# # 未成年的学生的个数为2
# # 打印手机尾号是4的学生的名字----------------------------------------------------
# for student in students:
#     if student['tel'].endswith('4'):
#         print('手机尾号为4的学生的名字为%s ' % student['name'])
#         # 如果在数据库里 tel的数据类型是int,需要%10,就能得到最后一位的数字
#         # 手机尾号为4的学生的名字为zhangsan
#         # 手机尾号为4的学生的名字为lisi
#     # 打印最高分和对应的学生的名字---------------------------------------------------
# max_score = students[0]['score']  # 假设第一个学生的成绩就是最高分
# max_index = 0
# # 带下标的遍历使用enumerate方法,不记得在哪里学过
#
# for i, student in enumerate(students):
#     if student['score'] > max_score:
#         max_score = student['score']
#         max_index = i
# print('最高成绩是%d' % max_score)            # 最高成绩是98
# for student in students:
#     if student['score'] == max_score:
#         print('最高分的学生姓名是:%s' % student['name'])
# # 最高分的学生姓名是:zhangsan
# # 最高分的学生姓名是:tom
# # 删除性别不明的所有学生---------------------------------------------------------
# # 方法1
# new_student = []
# for student in students:
#     if student['gender'] != 'unknow':
#         new_student.append(student)
#         # print('性别不明的学生姓名为:%s' % student['name'])
# print(new_student)
# # 方法2,切片是浅复制,感觉这个方法更精妙
# for student in students[::]:
#     if student['gender'] == 'unknow':
#         students.remove(student)
# print(students)
# # [{'name': 'zhangsan', 'age': 18, 'score': 98, 'tel': '13865465464', 'gender': 'female'}, {'name': 'lisi', 'age': 22, 'score': 95, 'tel': '17844477854', 'gender': 'male'}, {'name': 'jack ', 'age': 20, 'score': 58, 'tel': '19185466845', 'gender': 'male'}, {'name': 'tony', 'age': 15, 'score': 52, 'tel': '18154447813', 'gender': 'female'}]
# # [{'name': 'zhangsan', 'age': 18, 'score': 98, 'tel': '13865465464', 'gender': 'female'}, {'name': 'lisi', 'age': 22, 'score': 95, 'tel': '17844477854', 'gender': 'male'}, {'name': 'jack ', 'age': 20, 'score': 58, 'tel': '19185466845', 'gender': 'male'}, {'name': 'tony', 'age': 15, 'score': 52, 'tel': '18154447813', 'gender': 'female'}]
# 将列表按照学生成绩从小到大排列--冒泡排序的思想-------------------------------------
for j in range(len(students) -1):for i in range(len(students) -1 -j):        # 注意一定要有  -jif students[i]['score'] > students[i+1]['score']:students[i],students[i+1]=students[i+1],students[i]
print(students)
# [{'name': 'tony', 'age': 15, 'score': 52, 'tel': '18154447813', 'gender': 'female'}, {'name': 'jack ', 'age': 20, 'score': 58, 'tel': '19185466845', 'gender': 'male'}, {'name': 'zhangliang', 'age': 17, 'score': 89, 'tel': '15698665552', 'gender': 'unknow'}, {'name': 'lisi', 'age': 22, 'score': 95, 'tel': '17844477854', 'gender': 'male'}, {'name': 'zhangsan', 'age': 18, 'score': 98, 'tel': '13865465464', 'gender': 'female'}, {'name': 'tom', 'age': 19, 'score': 98, 'tel': '13146246423', 'gender': 'unknow'}]

P103 作业讲解2

# 用三个元组表示三门学科的选课学生姓名(一个学生可以同时选择多门课程)
sing = ('李白','杜甫','白居易','孟浩然','王昌龄','李商隐','骆宾王','亚里士多德')
dance = ('王安石','孟浩然','白居易','王昌龄','托尔斯泰','马克思','苏轼','曹操')
rap = ('李清照','托尔斯泰 ','亚里士多德','李商隐','王昌龄','李白')
# 元组之间支持加法
# 1.求选课学生总共有多少人------------------------------------------------
total = sing+dance+rap
print(total)# ('李白', '杜甫', '白居易', '孟浩然', '王昌龄', '李商隐', '骆宾王', '亚里士多德', '王安石', '孟浩然', '白居易', '王昌龄', '托尔斯泰', '马克思', '苏轼', '曹操', '李清照', '托尔斯泰 ', '亚里士多德', '李商隐', '王昌龄', '李白')
# 使用集合set可以去重
x = set(total)# {'李白', '曹操', '李清照', '王安石', '白居易', '李商隐', '杜甫', '骆宾王', '孟浩然', '托尔斯泰', '马克思', '王昌龄', '托尔斯泰 ', '亚里士多德', '苏轼'}
print(x)
print(len(x))#15
# 2.求只选了第一个学科的人的数量和对应的名字--------------------------------------------------------
sing_only = []
for p in sing:if p not in dance and p not in rap:sing_only.append(p)
print('只选择了第一个学科的有{}人,分别是{}:'.format(len(sing_only),sing_only))
# 只选择了第一个学科的有2人,分别是['杜甫', '骆宾王']:
# 3.求只选了一门学科的学生的数量和对应的名字--------------------------------------------------------
# 4.求只选了两门科学的学生的数量和对应的名字
# 5.求选了三门学科的学生的数量和对应的名字
p_dict = {}
for name in total:if name not in p_dict:p_dict[name] = total.count(name)
print(p_dict)
# {'李白': 2, '杜甫': 1, '白居易': 2, '孟浩然': 2, '王昌龄': 3, '李商隐': 2, '骆宾王': 1, '亚里士多德': 2, '王安石': 1, '托尔斯泰': 1, '马克思': 1, '苏轼': 1, '曹操': 1, '李清照': 1, '托尔斯泰 ': 1}
k1 =[]
k2 =[]
k3= []
for k,v in p_dict.items():if v == 1:k1.append(k)elif v == 2:k2.append(k)elif v ==3:k3.append(k)
print('只选择了一门课程的是{}'.format(k1))
print('只选择了两门课程的是{}'.format(k2))
print('选择了三门课程的是{}'.format(k3))
# 只选择了一门课程的是['杜甫', '骆宾王', '王安石', '托尔斯泰', '马克思', '苏轼', '曹操', '李清照', '托尔斯泰 ']
# 只选择了两门课程的是['李白', '白居易', '孟浩然', '李商隐', '亚里士多德']
# 选择了三门课程的是['王昌龄']

P104 集合的基本使用

#  集合是一个不重复的无序的,可以使用{}或者set来表示
# {}有两种意思,字典和集合都可以使用大括号
# 如果放的是键值对就是字典,如果放的是单个的值就是集合
person = {'name': 'zhangsan', 'age': 44, 'addr': '山东济南'}
x = {'hello', 45, 22.3, 'weight'}
print(type(person))  # <class 'dict'>
print(type(x))  # <class 'set'>
# 集合可以自动去重,并且是无序的
names = {'张三', '李四', '王五', '赵六', '张三'}
print(names)  # {'李四', '张三', '赵六', '王五'}# set能不能进行增删改查
names.add('秦始皇')
print(names)    # {'赵六', '张三', '王五', '李四', '秦始皇'}
# names.clear()
# print(names)       # set():空集合的表示方式是set(),空字典的表示方式是{}# pop()方法是从中随机删除一个,删除的是哪一个我们不知道
names.pop()
print(names)            # {'赵六', '王五', '李四', '秦始皇'},随机删除掉了张三
# 如果原本就是一个空的集合,再进行删除就会报错,报错的时候code是1,正常运行code是0# union()方法是将两个集合拼接到一起,生成一个新的集合,也就是求并集
print(names.union({'钢铁侠', '闪电侠'}))      # {'钢铁侠', '赵六', '闪电侠', '秦始皇', '王五', '张三'}# 而uodate方法,A.update(B),将B拼接到A里,放集合放元组都可以的
print(names.update(['孙悟空', '雷恩加尔']))            # None
print(names)                # {'张三', '秦始皇', '雷恩加尔', '王五', '孙悟空', '赵六'}print('jack' in names)# 用来判断集合中是否存在
# False

P105 集合的运算符的使用

sing = {'李白','杜甫','白居易','孟浩然','王昌龄','李商隐','骆宾王','亚里士多德'}
dance = {'王安石','孟浩然','白居易','王昌龄','托尔斯泰','马克思','苏轼','曹操'}
rap = {'李清照','托尔斯泰 ','亚里士多德','李商隐','王昌龄','李白'}
# total = sing+dance+rap      # 报错,set不支持加法操作# 集合的优点,能够支持很多算术运算符
print(sing - dance)     # 求A和B的差集,也就是A独有的元素
# {'骆宾王', '李白', '李商隐', '杜甫', '亚里士多德'}print(sing & rap) # 求A和B的交集,A 和B共同的部分       A n B
#  {'亚里士多德', '王昌龄', '李白', '李商隐'}print(sing | rap) # A和B的并集   A U B
# {'杜甫', '白居易', '王昌龄', '亚里士多德', '骆宾王', '孟浩然', '托尔斯泰 ', '李白', '李清照', '李商隐'}print(sing ^ rap) # A和B的并集 减去 A和B的交集
# {'托尔斯泰 ', '杜甫', '白居易', '李清照', '孟浩然', '骆宾王'}

P 106 eval和json的使用

# # 集合的练习
# # 去重,排序
# nums = [5, 8, 7, 6, 1, 3, 5, 1, 8, 4]
# # 去重
# x = set(nums)
# y = list(x)
# y.sort(reverse=False)  # false就是正序,True就是倒叙
# print(y)  # [1, 3, 4, 5, 6, 7, 8]
# ---------------------------------
# 内置类  list tuple set
nums = [9, 8, 4, 3, 2, 1]
x = tuple(nums)
print(type(x))  # <class 'tuple'>
y = set(x)
print(type(y))  # <class 'set'>
z = list({'name': 'zhangsan', 'age': 16, 'addr': 'zhongdu'})
print(z)  # # ['name', 'age', 'addr']   字典在强制转换为列表时只剩下key# python里有一个比较强大的内置函数,可以执行字符串中的代码,eval
a = 'input("请输入您的用户名")'  # a是一个字符串
print(a)
# eval(a)         #  请输入您的用户名,直接把a里面的内容执行了
b = '1+5'
print(eval(b))# json的使用,把列表,元组,字典转换成为json字符串
# json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,json本质是一个字符串
# 举例:   '{"name":"zhangsan","age":18,"addr":"jinan"}'
# json是长的非常像 字典的 一个字符串,json中用的是双引号,最最外还有一个单引号。
import jsonperson = {'name': 'zhangsan', 'age': 18, 'addr': 'shandong'}
m = json.dumps(person)  # dumps将字典、列表、集合、元组等转换成为json字符串
print(m)  # {"name": "zhangsan", "age": 18, "addr": "shandong"}
print(type(m))  # <class 'str'>
#   print(m['name'])    #  报错,m是字符串,已经不是字典了n = '{"name":"lisi","age":18,"gender":"female"}'
# p = eval(n)
# print(type(p))      # <class 'dict'>
s = json.loads(n)  # loads可以将json字符串转u换为python里的数据
print(s)
print(type(s))  # print(type(s))
#  将json字符串转换为python里的数据 常用的还是loads,而不是eval# python                JSON
# True                    true
# False                   false
# 字符串                字符串
# 字典                  对象
# 列表,元组             数组
print(json.dumps(['hello', 'good', 'yes', True]))
print(json.dumps(('hello', 'good', 'yes', False)))
# ["hello", "good", "yes", true]
# ["hello", "good", "yes", false]

python教程15-作业讲解、集合的使用、集合运算符的使用、eval和json的使用相关推荐

  1. 零基础Python完全自学教程15:Python中的列表

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第14课< Python中的列表 >.本节课是一个大课,我分了这些知识点进行 ...

  2. python是人都能学会_人人都能学会的python编程教程15:高级特性2

    生成器 如果你想要一百万个数,而这些数里只有一百个数是你经常要用的,剩下的都几乎不怎么会用到,那么如果直接把这一百万个数全部放在list中是不明智的因为这会浪费较多存储空间,生成器就是为了解决这个问题 ...

  3. python读法1002python读法-Python教程之绘制Mandelbrot集合

    原标题:Python教程之绘制Mandelbrot集合 一. 分形与混沌 自然界的很多事物,如树木.云彩.山脉.雪花.海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性: 有着十分精 ...

  4. python教程输入_python怎么输入一个集合

    set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. set 语法: class set([iterable]) 参数说明: iterable -- 可 ...

  5. 【2023】Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器——数组和集合 15.2 集合概述

    [2023]Kotlin教程 文章目录 [2023]Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器--数组和集合 15.2 集合概述 第二篇 面向对象与函数式编程 第15章 数据容 ...

  6. python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念

    数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...

  7. python中s和t是两个集合、对s|t描述正确的是_全国计算机等级考试二级教程--python语言程序设计(2018年版)第六章:组合数据类型...

    声明:本篇文章只是个人知识盲区.知识弱点.重点部分的归纳总结,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理,转载请注明出处. 作者:sumjess 一.组合数据类型的基本概念: Python语 ...

  8. python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)...

     先来回顾一下昨天的内容 黏包现象 粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全 ...

  9. python教程400集笔记,Python学习中的笔记--集合相关,python笔记--集合

    Python学习中的笔记--集合相关,python笔记--集合 集合的基本操作 一.可修改的集合set 创建集合 var = set() var = {'a','b','c','d'} 成员检测 va ...

最新文章

  1. 吴恩达最新斯坦福课程《深度学习》全部视频已送达,请签收!
  2. es6 新增数据类型Symbol
  3. JSBridge深度剖析
  4. Web前端开发人员和设计师必读文章推荐【系列九】
  5. web版本 开源压测工具_标星 1.3K 的 Web 框架压测库,助你更好的选择框架
  6. 重启计算机设的桌面背景就没了,桌面壁纸无法保存怎么办?Win7系统重启后不保存桌面背景解决方法...
  7. 运维记录 - 业务日志清理功能
  8. SecureCRT 使用指南
  9. 在android中监听呼出电话(电话拦截、修改呼出电话)
  10. Android隐藏状态栏和标题栏
  11. 20155202 实验四 Android开发基础
  12. caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0
  13. pytorch---模型保存预加载(1)什么是状态字典:state_dict
  14. 通达信资金净流入公式_资金净流入公式——股票实战技术指标公式研究有缘看本博定多活30年——东方财富网博客...
  15. python epub转txt_怎么将很多个TXT合并成epub?
  16. multisim模拟电路加法器_利用multisim仿真设计反相加法电路
  17. 电力线载波 Prime PLC 通讯技术简介
  18. SpringCloud (五) ——Feign远程调用
  19. 巴菲特对优质公司买卖
  20. 1.U3D和U3D安装介绍

热门文章

  1. 淘宝详情页的 BigRender 优化与存放大块 HTML 内容的最佳方式
  2. 安卓Bottom Navigation Activity的自定义使用,即常见错误的处理
  3. Java基础之 contains 简单用法
  4. if语句-分段函数1
  5. 浅谈敏捷开发和迭代开发相结合
  6. nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证
  7. 重庆北大青鸟解放碑校区J12班 五杀摇滚乐队【权限管理系统】
  8. 第一次写点东西,希望是个好的开始
  9. SMIF POD晶圆传送盒CID载体读写头 TI玻璃管标签读写器
  10. w ndows10输入法设置,Win10输入法设置