1.15变量类型—字典类型(二)
需要生成一个字典: 有5个学生,初始默认给每个学生发10元钱,用字典表示
In [159]: students = ['wang','li','sun','zhao','qian']
#生成字典非常便捷的函数 fromkeys ,给定序列的对象(students),给定一个初始化的值10
In [160]: dict.fromkeys(students,10)
Out[160]: {'li': 10, 'qian': 10, 'sun': 10, 'wang': 10, 'zhao': 10}
访问字典中的值
In [161]: money = dict.fromkeys(students,10)
In [162]: money['wang']
Out[162]: 10
In [164]: money.get('wang')
Out[164]: 10
#访问不存在的会报错
In [163]: money['cc']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-163-6a9ddc568e7e> in <module>()
----> 1 money['cc']
KeyError: 'cc'
# money.get函数, 访问不存在的会返回None(空)
In [165]: a = money.get('cc')
In [166]:
print(a)
None
#get的好处,找不到,可以给定一个值
In [167]:
a = money.get('cc','100')
In [168]:
print(a)
100
前面两个列表可以生成一个字典,也可以通过字典生成两个列表:
#返回关键姓氏
In [169]: money.keys()
Out[169]: dict_keys(['wang', 'li', 'sun', 'zhao', 'qian'])
#返回对应的值
In [170]: money.values()
Out[170]: dict_values([10, 10, 10, 10, 10])
#返回每一个一 一对应的值,(拉锁函数拉起来的值)
In [171]: money.items()
Out[171]: dict_items([('wang', 10), ('li', 10), ('sun', 10), ('zhao', 10), ('qian', 10)])
#删除字典中元素(删除一次后就没有了,再删除一次,会提示出错)
In [172]: money.pop('wang')
Out[172]: 10
In [173]: money
Out[173]:{'li': 10, 'qian': 10, 'sun': 10, 'zhao': 10}
#增加字典中元素 (wang删掉了,再增加回来)
In [174]: money['wong'] = 100
In [175]: money
Out[175]: {'li': 10, 'qian': 10, 'sun': 10, 'wong': 100, 'zhao': 10}
In [176]: money['ni hao'] = 100
In [177]: money
Out[177]: {'li': 10, 'ni hao': 100, 'qian': 10, 'sun': 10, 'wong': 100, 'zhao': 10}
#setdefault 给 li 赋值,前面li如果存在,返回它存在的值,不存在,返回赋给它的值
In [178]:money.setdefault('li',10000)
Out[178]:10
In [179]: money.setdefault('haha',1000000)
Out[179]: 1000000
In [180]: money
Out[180]:
{'haha': 1000000,
'li': 10,
'ni hao': 100,
'qian': 10,
'sun': 10,
'wong': 100,
'zhao': 10}
2.1条件判断 (一)
第二节内容:
1.条件判断
2.循环
3.函数(重点)
4.类
#条件判断
#条件判断的伪代码(可以近似的写法表达代码的意思和逻辑,不可以正真运行, 运行会报错)
In [51]:
if condition:
do somthing
else:
do somthing
#如果 怎样 就怎样,否则怎样
File "<ipython-input-51-68eb56769616>", line 4
do somthing
^
SyntaxError: invalid syntax
应用题:购买水果,合计金额为32.5元,水果店搞活动,满30元打九折,求实际花费?
#首先定义一个变量——total_cost = 32.5
In [52]: total_cost = 32.5
if total_cost > 30:
discount = 0.9
else:
discount = 1
total_cost *= discount
print('实际花费为:{}元'.format(total_cost))
实际花费为:29.25元
format 翻译:格式 ; format增强的格式化字符串函数 作用:优化函数的输出
In [50]: total_cost = 32.5
if total_cost > 30:
discount = 0.9
else:
discount = 1
total_cost *= discount
print('实际花费为:{}元')
实际花费为:{}元
应用题(稍复杂):购买水果,消费超过30元打九折,超过50元打八折,求实际花费?
#相比上面的应用题,条件多了一个判断
In [20]: total_cost = 32.5
if total_cost > 50:
discount = 0.8
elif total_cost > 30: #elif 后面不跟冒号
discount = 0.9
else: #else 后面必须有冒号
discountt = 1
total_cost *= discount
print('实际花费为:{}元'.format(total_cost))
实际花费为:29.25元
总结条件判断:
1.条件判断可以任意组合
a.elif可以有0到任意多个,lese可有可无;
b.条件判断可以进行嵌套
2.着重来看: condition (condition 翻译:条件)
#条件判断嵌套:
In [21]: total_cost = 32.5
is_vip = True
if total_cost > 50:
if is_vip:
discount = 0.8 #不能在if的正下方,要和if是措开的
else:
discount = 1 #不能在else的正下方,要和else是措开的
elif total_cost > 30:
discount = 0.9
else:
discount = 1
total_cost *= discount
print('实际花费为:{}元'.format(total_cost))
实际花费为:29.25元
#bool函数是一个类型,是一个类
In [22]: type(bool)
Out[22]: type
#空字符串,空字典,空列表通过bool类型,可以进行转换 (但是在写代码时不用其进行显示的转换)
In [23]: bool(''),bool({}),bool([])
Out[23]: (False, False, False)
#字符串等可用来当做条件判断
In [24]:
condition = ''
if condition:
print('Ture')
else:
print('False')
False
In [25]:
condition = []
if condition:
print('Ture')
else:
print('False')
False
In [26]:
condition = {}
if condition:
print('Ture')
else:
print('False')
False
#有字符返回Ture
In [27]:
condition = 'zzqqzz'
if condition:
print('Ture')
else:
print('False')
Ture
一个值被当做bool值,概念上像是有与没有的区别