您的位置:首页 > 编程语言 > Python开发

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

2017-11-27 20:13 627 查看
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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: