Python入门 第二天(条件语句、循环语句、dict)

Python之if语句
比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:
age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
print 'END'
注意
Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。
缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。
if 语句后接表达式,然后用:表示代码块开始。
如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车

Python之 if-else
利用 if ... else ... 语句,我们可以根据条件表达式的值为 True 或者 False ,分别执行 if 代码块或者 else 代码块。
注意: else 后面有个“:”。

Python之 if-elif-else
要避免嵌套结构的 if ... else ...,我们可以用 if ... 多个elif ... else ... 的结构,一次写完所有的规则:
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
    print 'baby'
elif 意思就是 else if。这样一来就写出了结构非常清晰的一系列条件判断。
注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。所以编写时如果有交集要把范围小的放在上面优先判断。

Python之 for循环
Python的 for 循环就可以依次把list或tuple的每个元素迭代出来:
L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name
注意:  name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 name,然后执行for循环体(就是缩进的代码块)。
每次取L中的一个元素赋值给name,之后执行下面的操作。

Python之 while循环
while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。
比如要从 0 开始打印不大于 N 的整数:
N = 10
x = 0
while x < N:
    print x
    x = x + 1
while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。
在循环体内,x = x + 1 会让 x 不断增加,最终因为 x < N 不成立而退出循环。
如果没有这一个语句,while循环在判断 x < N 时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。

Python之 break退出循环
用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句。
比如计算1至100的整数和,我们用while来实现:
sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum
通过判断 x > 100 条件成立时,用break语句退出循环,这样也可以实现循环的结束。

Python之 continue继续循环
在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。
假设我们已经写好了利用for循环计算平均分的代码:
L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
    sum = sum + x
    n = n + 1
print sum / n
现在老师只想统计及格分数的平均分,就要把 x < 60 的分数剔除掉,这时,利用 continue,可以做到当 x < 60的时候,不继续执行循环体的后续代码,直接进入下一次循环:
for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

Python之 多重循环
在循环内部,还可以嵌套循环,我们来看一个例子:
for x in ['A', 'B', 'C']:
    for y in ['1', '2', '3']:
        print x + y
x 每循环一次,y 就会循环 3 次,这样,我们可以打印出一个全排列
注意:首行缩进规则正确才会进行嵌套。

Python之什么是dict
list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:
['Adam', 'Lisa', 'Bart']
或者考试的成绩列表:
[95, 85, 59]
但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。
如果把名字和分数关联起来,组成类似的查找表:
'Adam' ==> 95
'Lisa' ==> 85
'Bart' ==> 59
给定一个名字,就可以直接查到分数。
Python的 dict 就是专门干这件事的。用 dict 表示“名字”-“成绩”的查找表如下:
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。
花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。
由于dict也是集合,len() 函数可以计算任意集合的大小:
注意: 一个 key-value 算一个

Python之访问dict
可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:
一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d:
    print d['Paul']
如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None

Python中dict的特点
①查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
②存储的key-value序对是没有顺序的!这和list不一样。
注意:dict内部是无序的,不能用dict存储有序的集合
③作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。不可变这个限制仅作用于key,value是否可变无所谓,但是最常用的key还是字符串,因为用起来最方便

Python更新dict
dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。比如已有dict:
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
要把新同学'Paul'的成绩 72 加进去,用赋值语句:
>>> d['Paul'] = 72
如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value

Python之 遍历dict
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
...     print key
...
Lisa
Adam
Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。
请用 for 循环遍历如下的dict,打印出 name: score 来。
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
Answer:
d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
for key in d:
    print key,':',d[key]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值