《Python基础教程》学习笔记之[D5]条件、循环和其它语句

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/treesky/article/details/7071640

只做涂鸦笔记之用,如有疑议等问题可留言探讨。

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*- 

# 条件、循环和其它语句

print # 在 python3 中,已经不再是语句,而是函数

>>> print 23,45,65,67,7
23 45 65 67 7               # 会被自动加入空格
>>>

import # 导入

import somemodule
from somemodule import others
from somemodule import others,others2 [,……]
from somemodule import *

import very.long.name as vln # 别名
from very.long.name import samefunction as newname # 别名

# 如果不同模块中,存在相同的函数,此时最好用全名或者别名区分

# 魔法赋值
# 序列解包 等号的两侧数量要一致。在3.0 又增加了一些特性。
>>> x,y,z = 1,3,4
>>> print x,y,z
1 3 4
>>> x,y = y,x
>>> print x,y,z
3 1 4

>>> adict = { 'a':213, 'b':'290' }
>>> key, value = adict.popitem()
>>> print key, value
a 213
>>>

# 链式赋值
>>> adict = { 'a':213, 'b':'290' }
>>> key, value = adict.popitem()
>>> print key, value
a 213
>>> a=b=c=adict
>>> a
{'b': '290'}
>>>

x = y = somefunction()
# 等同于
y = somefunction()
x = y
# 并不一定等同于下面
x = somefunction()
y = somefunction()

# 增量赋值,其实就是赋值后计算了一下,也适用于 * / % 等标准运算符
>>> x = 2
>>> x += 1
>>> print x
3
>>>

# 语句块  是靠缩进来控制的,语句块的开始是 冒号 (:)

False None 0 "" () [] {} # 都是 假值 0包含了 其他类型的0,float long 之类的

# if 语句 也可以嵌套多层

if thisisTrue:
    dosomething

if thisisTrue:
    dosomething
else:
    doothers

if thisisTrue:
    do1
elif secondTrue:
    do2
else:
    do3

# 比较运算
x==y
x<y
x>y
x>=y
x<=y
x!=y
x is y
x is not y
x in y
x not in y
x<y<z

# 相等运算符
1==1
# 同一性运算符
is
y is x

>>> x = y = [1,2,3]
>>> z = [1,2,3]
>>> x is y
True
>>> x is z
False
>>>


# in 成员资格 之前有介绍过
# 布尔运算中的短路逻辑 如果x为True,则返回y的值,否则返回x的值。即:只要x为False立即返回
if x and y:
    print y

a if b else c # 如果b为True,a=b,否则a=c

assert # 断言

>>> num = 12
>>> assert 0 < num < 6
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>>

# while 循环
>>> num = 1
>>> while num < 100:
...     print num
...     num += 1

# for
>>> alist = [x for x in range(20)]
>>> for x in alist:
...     print x

for x in range(20):
    print x

# 能使用for就尽量不要使用while

# 循环遍历字典

>>> dic = { 'a':12, 'b':13, 'c':14 }
>>> for k, v in dic.items():
...     print k, v
...
a 12
c 14
b 13
>>>

# 一些迭代工具 itertools
# 并行迭代
>>> names = ['lilei', 'hanmeimei']
>>> ages = [25, 24]
>>> for i in range(len(names)):
...     print names[i], ages[i]
...
lilei 25
hanmeimei 24
>>>
# 用zip将两个列表压缩在一起,成为一个元组的列表来迭代
>>> for k,v in zip(names,ages):
...     print k,v
...
lilei 25
hanmeimei 24
>>>

# 如果元素数量不同
>>> names.append('xiaohuang')
>>> names
['lilei', 'hanmeimei', 'xiaohuang']
>>> ages
[25, 24]
>>> for k,v in zip(names, ages):
...     print k,v
...
lilei 25
hanmeimei 24
>>>

# enumerate 创建可迭代对象

# 跳出循环 break,continue
# while True/break

>>> num = 0
>>> while num < 10:
...     if num == 8:
...         break
...     num += 1
>>> print num
8

# 循环中的 else 语句
# 只有当没有调用break的时候执行

>>> for n in range(99,81,-1):
...     root = sqrt(n)
...     if root == int(root):
...         print n
...         break
... else:
...     print 'Do not find it'
...
Do not find it
>>>

# 列表推倒式

>>> [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>

>>> [x*x for x in range(10) if x%3 == 0]
[0, 9, 36, 81]
>>>

#可以增加更多的for


# pass 如果什么都不执行可以用
def nothing():
    pass

if a == 1:
    pass
else:
    print 'OK'

# del 删除,之前有介绍过,类似 del 的只是名称 而值python会自动回收
x = ['Hello', 'php']
y = x
y[1] = 'Python'
y
>>> ['Hello', 'Python']
del x
y
>>> ['Hello', 'Python']  # y 依然存在

# exec eval 都是慎用的函数 动态创建python代码,如果使用过 JS 或者 php 都应该知道,大同小异









没有更多推荐了,返回首页