第四天的学习内容

一、字典
在这里插入图片描述
键与值 是成对存在的
1.字典的创建
我们可以通过{},dict()来创建字典对象。
在这里插入图片描述
2.通过zip()创建字典对象
第一行是键 第二行是值 最后利用zip函数来创建

k=["name","age","job"]
>>> v=["gaoqi",18,"teacher"]
>>> d=dict(zip(k,v))  #dict为字典的前缀
>>> d
{'job': 'teacher', 'age': 18, 'name': 'gaoqi'}

3.通过fromkeys创建值为空的字典

a=dict.fromkeys(["name","age","job"])
>>> a
{'job': None, 'age': None, 'name': None}

二、字典元素的访问
1.通过[键] 获取“值”,若键不存在,则抛出异常。
在这里插入图片描述
2.通过get()方法获得“值”,推荐使用。
指定键不存在,返回None;
在这里插入图片描述
3.列出所有的键值对

4.列出所有的键,列出所有的值
5.len()键值对的个数
6.检测一个“键”是否在字典中
在这里插入图片描述
三、字典元素的添加、修改和删除
在这里插入图片描述
PS:键存在则覆盖,不存在则新增
2.update()将新字典中的所有键值对全部添加到旧的字典对象上。如果key重复,则直接覆盖。
a.update(b) b直接覆盖a
3.字典中元素的删除
del()
clear() 删除所有键值对
pop() 删除指定键值对,并返回对应的“值对象”

a={"name":"gaoqi","age":18,"job":"programmer"}
>>> del(a["name"])
>>> a
{'job': 'programmer', 'age': 18}
>>> ##删除键值对
>>> b=a.pop("age")
>>> b
18
>>> ##删除指定键值对,返回对应的值 即删除age 返回 对应的值 18

4.popitem()
随机删除和返回该键值对
使用方法:a={}
a.popitem()
在这里插入图片描述
四、序列解包
序列解包可以用于元组、列表、字典。可以方便的对多个变量赋值。
序列解包用于字典时,默认是对“”进行操作,如果需要对键值对操作,则需要使用items();如果需要对“”进行操作,则需要使用values();

a={"name":"gaoqi","age":18,"job":"programmer"}
>>> b,c,d=a
>>> b
'job'
>>> c
'age'
>>> d
'name'
>>> ##以上是对键的解包
>>> e,d,f=a.values()
>>> e
'programmer'
>>> d
18
>>> f
'gaoqi'
>>> ##以上是对值的解包
>>> q,w,t=a.items()
>>> q
('job', 'programmer')
>>> w
('age', 18)
>>> t
('name', 'gaoqi')
>>> ##以上是对键值对的解包

五、表格数据使用字典和列表存储,并实现访问
eg:在这里插入图片描述

>>> r1={"name":"xiao","age":18,"salary":1000,"city":"北京"}
>>> r2={"name":"xiao1","age":19,"salary":2000,"city":"上海"}
>>> r3={"name":"xiao2","age":20,"salary":3000,"city":"深圳"}
>>> tb=[r1,r2,r3]
>>> print(tb[1].get("salary"))
2000
>>> ##tb[1],代表第2行,根据0,1,2的顺序
>>> ##在tb[1],即第二行中,获取薪水的值
print(tb[1].get("salary"))
for i in range(len(tb)):
    print(tb[i].get("salary"))
for i in range(len(tb)):
     print(tb[i].get("name"),tb[i].get("age"),tb[i].get("salary"),tb[i].get("city"))


在这里插入图片描述
六、字典核心底层原理(重要)

二进制的表示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a420f90041bf452a88cc598e15941e47.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NE在这里插入图片描述
048.字典_核心底层原理_内存分析_存储键值对过程
在这里插入图片描述
049.字典_核心底层原理_内存分析_查找值对象过程
在这里插入图片描述
在这里插入图片描述

集合
1.add()
在这里插入图片描述
元素中的键是不能重合的,因此集合中的所有元素都是字典中的键,不能重复且唯一。

2.set()
使用set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个。
在这里插入图片描述
3.remove(),删除指定元素,
a.remove()
clear(),清空整个集合
a.clear()
在这里插入图片描述
并集: a|b =a.union(b)
交集: a&b =a.intersection(b)
差集: a-b =a.difference(b)

a={1,2,3,4}
>>> a
set([1, 2, 3, 4])
>>> a.add(3)
>>> a
set([1, 2, 3, 4])
>>> a={1,2,3,"aa"}
>>> a
set(['aa', 1, 2, 3])
>>> a={1,3,"sxt"}
>>> b={"he","it","sxt"}
>>> a|b
set([1, 3, 'sxt', 'it', 'he'])
>>> a&b
set(['sxt'])
>>> a-b
set([1, 3])
>>> a.union(b)
set([1, 3, 'sxt', 'it', 'he'])
>>> a.intersection(b)
set(['sxt'])
>>> a.difference(b)
set([1, 3])

结构一共分为两种,选择结构和循环结构,接下来线学习选择结构。
1.选择结构主要是但分支结构/双分支结构和多分支结构。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PS:数字只有其为0的时候才是false,其余数字都为true

if 3: #整数作为条件表达式
    print("ok")
a=[]
if a: #列表作为条件表达式,由于为空列表,是FALSE
    print ("空列表,False")
    #因为是空的,所以不会被执行打印
b=[]
if not b:
    print("空列表,False")
s="False"
if s:#此处False作为字符串 并不是空的
    print("非空字符串,TRUE")

值得注意的是,条件表达式中不能有赋值操作符“=”
写成”==“
在这里插入图片描述
在这里插入图片描述
eg:
在这里插入图片描述
在这里插入图片描述
在双分支结构赋值简单的情况下,用三元运算符来代替。
#测试三元条件运算符
print(“s<10"if int(s)<10 else"s>=10”)
#if 前表示真条件, else后表示假条件
在这里插入图片描述
在这里插入图片描述

注意:多分支结构,几个分支之间是有逻辑关系的,不能随意颠倒顺序。
小练习:在这里插入图片描述
在这里插入图片描述
##使用完整的条件表达,条件之间不相互依赖
在这里插入图片描述
小练习2:
通过坐标轴,判断象限

##测试用坐标轴来判断象限
x=int(input("请输入x坐标"))
y=int(input("请输入y坐标"))
if x==0 and y==0:
    print("原点")
elif x==0:
    print ("y轴")
elif y==0:
    print ("x轴")
elif x>0 and y>0:
    print("第一象限")
elif x<0 and y>0:
    print("第二象限")
elif x<0 and y<0:
    print("第二象限")
else :
    print("第四象限")

在这里插入图片描述
小练习:输入一个分数。分数在0-100之间。90分以上是A,80以上是B,70以上是C,60以上是D。60以下是E。
分析出有两个变量,score和grade

#测试选择结构的嵌套
score=int(input("请输入一个0-100之间的分数"))#定义一个分数变量
grade="" #定义一个等级变量
if score>100 or score<0: #**如果输入的分数不符合要求则重新输入**
  score=int(input("输入错误!请重新输入一个0-100之间的分数"))
  #也可以直接打印print() 因为if条件输入101之后,已经符合该处条件,不会再去跳到else去判断等级啦
else:
   if score>=90:
    grade="A"
   elif score>=80:
     grade = "B"
   elif score>=70:
     grade = "C"
   elif score>=60:
     grade = "D"
   else:
      grade="E"
   print("分数为{0},等级为{1}".format(score,grade))

在这里插入图片描述

score=int(input("请输入一个0-100之间的分数:"))
degree="ABCDE" #定义明确的变量
num=0
if score>100 or score<0:
   score=int(input("输入错误!请重新输入一个0-100之间的分数:"))
else:
    num=score//10 #//代表整数除法
    if num<6:num=5
    print ("分数是{0},等级是{1}".format(score,degree[9-num]))

在这里插入图片描述
常用的循环时while循环 和 for 循环,for循环用的要更多一些
在这里插入图片描述
在这里插入图片描述
\t 将很多行转为一行来表示,节约空间

#计算1-100之间数字的累加和
num2=0
sum_all=0
while num2<=100:
    sum_all=sum_all+num2
    num2+=1
print("1-100所有数的累加和:",sum_all)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值