第四节
第一个条件语句
if 条件:
条件成立执行的代码1
条件成立执行的代码2
......
else:
条件不成立执行的代码1
条件不成立执行的代码2
……
代码如下:
身高 = float(input("请输入您的身高(米):"))
if 身高 >+1.3:
print(f'您的身高是{身高},已经超过1.3米,您需要购票')
else:
print(f'您的身高是{身高},按规定1.3米(含)以下免票,请直接上车')
print('祝您旅途愉快!')
第二个条件语句
if 条件1:
条件1成立执行的代码1
条件1成立执行的代码2
......
elif 条件2:
条件2成立执行的代码1
条件2成立执行的代码2
......
else:
以上条件都不成立执行的代码
……
代码如下:
age = int(input('请输入您的年龄:'))
if age < 18:
print(f'您的年龄是{age},对不起18岁以下不能考取驾照,请您{18-age}年后再来')
elif age > 70:
print(f'您的年龄是{age},对不起70岁以上不能考取驾照')
else:
print(f'您的年龄是{age},欢迎您,马路高手')
print('谢谢')
第五节
字典与集合
甲鱼老师说,什么时候用字典?当下标(索引)不好用的时候!
例如:
序列名 = ['华为',520,'小米',520,'苹果',14,'三星',24]
当顺序变化后,数据就乱了,而且下标也不管用了。
这个时候,就要用到字典了,字典和数据顺序无关,所以字典不支持下标,字典是按key和value的方式成对出现,俗称键值对。
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
字典用大括号包裹,数据是键:值成对出现。
空字典的创建
名字 = { }
名字 = dict( )
字典的增删改查
增加和修改数据:
语法: 字典序列名[键] = 值
如果键存在则修改对应的值,如果键不存在新增这个键和值。
删数据:
删除字典内数据语法:del字典序列名[键] # 只需要写键,它会把键和值一起删除
删除整个字典的语法:del 字典序列名
清空字典:clear( ) 字典序列名.clear( )
代码如下:
a = {'华为':520,'小米':520,'苹果':14,'三星':24}
a['华为'] = 521
print(a)
{'华为': 521, '小米': 520, '苹果': 14, '三星': 24}
a['荣耀'] = 500
print(a)
{'华为': 521, '小米': 520, '苹果': 14, '三星': 24, '荣耀': 500}
del a['三星']
print(a)
{'华为': 521, '小米': 520, '苹果': 14, '荣耀': 500}
a.clear()
print(a)
{}
查数据:
注意只能用键查值,不能用值查键,因为键是唯一的,值可能是重复的。
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
print(字典序列名['小米']) 返回:520
print(字典序列名['诺基亚']) 返回:报错
总结:如果键存在,我们返回值,否则报错。
字典的查询方法:
(1)get( ) 语法: 字典序列名.get(键,随便写)
如果键存在,返回值。如果键不存在,返回默认值,默认值是你随便写的内容,如果省略了这个参数,返回None。
(2)values( ) 语法: 字典序列名.values( ) # 返回字典中所有的值
(3)items( ) 语法:字典序列名.items( ) #可迭代对象(里面的数据是元组),迭代就是重复反馈过程
代码如下:
a = {'华为':520,'小米':520,'苹果':14,'三星':24}
print(a['华为'])
520
print(a['诺基亚'])
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print(a['诺基亚'])
KeyError: '诺基亚'
a = {'华为':520,'小米':520,'苹果':14,'三星':24}
print(a.get('华为','不存在'))
520
print(a.get('诺基亚','不存在'))
不存在
print(a.get('诺基亚'))
None
print(a.values())
dict_values([520, 520, 14, 24])
a = {'华为':520,'小米':520,'苹果':14,'三星':24}
print(a.items())
dict_items([('华为', 520), ('小米', 520), ('苹果', 14), ('三星', 24)])
字典的循环遍历
什么叫遍历?就是全部数据都访问了就叫遍历。
1、遍历字典的键
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
for 键 in 字典序列名.keys( ):
pr
2、遍历字典的value
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
for 值 in 字典序列名.values( ):
print(值)
3、遍历字典的元素
(返回:每行是一个元组)
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
for 元素 in 字典序列名.items( ):
print(元素)
4、遍历字典的键和值
字典序列名 = {'华为':520,'小米':520,'苹果':14,'三星':24}
for 键 , 值 in 字典序列名.items( ):
print( f' {键} = {值} ')
a = {'华为':520,'小米':520,'苹果':14,'三星':24}
for i in a.keys():
print(i)
华为
小米
苹果
三星
for i in a.values():
print(i)
520
520
14
24
for i in a.items():
print(i)
('华为', 520)
('小米', 520)
('苹果', 14)
('三星', 24)
for i,j in a.items():
print(f'{i}={j}')
华为=520
小米=520
苹果=14
三星=24
字典与集合
创建集合:
可以用{ } 或 set( )创建集合,但是创建空集合必需用set( ),因为{ }创建的是空字典
集合的特点: (1)自动去除重复数据 (2)顺序是随机的,所以不支持下标
集合名 = {1,2,3,4,5,6,7}
集合名 = {1,2,3,4,4,5,5,6,7} # {1, 2, 3, 4, 5, 6, 7} 自动去重复
空集合 = set( )
代码如下:
a = {}
type(a)
<class 'dict'>
a = {1,2}
type(a)
<class 'set'>
a = set()
type(a)
<class 'set'>
a = {1,2,2,3,4,2}
print(a)
{1, 2, 3, 4}
增加数据:
集合名.add(数据) # 因为集合自动去重复,所以增加重复内容时不进行任何操作
追加数据序列:
集合名.update(数据序列) # 数据序列:列表,字符串,元组
代码如下
a = {1,2,3,4}
a.add(4)
print(a)
{1, 2, 3, 4}
a.add(5)
print(a)
{1, 2, 3, 4, 5}
a.update([7,8,9])
print(a)
{1, 2, 3, 4, 5, 7, 8, 9}
a.update((11,12,13))
print(a)
{1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13}
a.update('abc')
print(a)
{1, 2, 3, 4, 5, 7, 8, 9, 'b', 11, 12, 13, 'a', 'c'}
删除数据:
集合名.remove(数据) # 如果数据不存在,报错
集合名.discard(数据) # 如果数据不存在,不报错
集合名.pop( ) # 随机删除集合中某个数据,并返回这个数据
查看返回数据 变量名 =集合名.pop( )
查看被删除的数据 print(变量名)
查看集合还剩下什么 print(集合名)
代码如下:
a = {1,2,3,4}
a.remove(5)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a.remove(5)
KeyError: 5
a.discard(5)
print(a)
{1, 2, 3, 4}
a.remove(1)
print(a)
{2, 3, 4}
a.discard(4)
print(a)
{2, 3}
a= {1,2,3,4,5}
a.pop()
1
a.pop()
2
print(a)
{3, 4, 5}
b = a.pop()
print(a)
{4, 5}
print(b)
3
查找数据:
in: 判断数据是否在集合序列中
not in: 判断数据不在集合序列中
print( 数据 in 集合名 ) # 返回 True 或 False
print( 数据 not in 集合名 ) # 返回 True 或 False
代码如下:
a = {1,2,3,4,5}
print(1 in a)
True
print(8 in a)
False
print(1 not in a)
False
print(8 not in a)
True
总结一:
第1课 我们学习3种类型转换 int( ) float( ) str( )
第3课,我们又学习2种类型转换
list(序列名) # 将序列转为列表
tuple(序列名) # 将序列转为元组
今天我们再学一个
set(序列名) # 将某个序列转换成集合
注意:集合自动去重复,但不支持下标,没有顺序
a = [1,2,3] #建一个列表
b = (1,2,3) #建一个元组
print(set(a)) #把a转成集合,通过set()函数转的
{1, 2, 3}
print(set(b)) #把b也转成集合
{1, 2, 3}
总结二:
序列:序列是一个存放多个值的连续内存空间。
有序序列:有序,意味着有下标,可以进行下标操作、切片操作,列表、元组、字符串…
无序序列:字典、集合…
可变序列:元素可以进行增删改,更改之后id地址不会变。反之,就是不可变序
可变类型:列表、字典、集合…
不可变类型:整型、浮点型、字符串、元组...
总结三:
1、字符串:不能修改的字符序列。除了不能修改,可把字符串当成列表一样处理。
2、列表:我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。
3、元组:用来存放不能被轻易修改的数据,例如身份证号
4、字典:是除列表外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
5、集合:目的就是去重复。