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

python--条件, 循环和其他语句

2017-07-12 16:39 393 查看

条件, 循环和其他语句

把一件事作为另一件事导入

import ….

from.. import….

import … as…. // 为函数提供别名

赋值魔法

序列解包

多个赋值操作同时进行, 或者说交换多个变量。 这里做的事就是序列解包(递归解包)– 将多个值的序列解开, 然后放到变量的序列中。

x, y, z = 1, 2, 3
print (x, y, z)


- 当函数或者方法返回元组(或其他可迭代对象)时, 这个方法尤其有用, 假设需要获取(和删除)字典中任意键-值对, 可以使用popitem方法, 这个方法将键-值作为元组返回。 那么这个元组就可以直接赋值到两个变量中:


s = {"name":"A", "age":"89"}
x, y = s.popitem()
print (x)
print (y)


- 这个函数返回一个以上的值并且打包成元组, 然后通过一个赋值语句很容易进行访问。 所解包的序列中的元素数量必须和放置在赋值符号=左边的变量数量完全一致,否则Python会在赋值时引发异常
- Python3.0中有另一个解包特性:可以像在函数的参数列表中一样使用星号运算符, 例如


a, b, *c = [1, 2, 3, 4]
这样在a,b赋值之后, 所有的其他数都收集到c中, c = [3, 4], 星号变量可以放在第一位

- 链式赋值

`x = y =z`


- 增量赋值

- x += 1 这样的

- 语句块:缩排的乐趣

- 条件和条件语句

- 布尔值的作用

- 假 : False, None。 所有类型的数字0(包括浮点型、长整型、和其他类型)、空序列(比如字符串、元组、列表)以及空的字典

- 真: 除了上述都为真

- bool(), 可以用来转换其他值, 确定该值的真假。但是并不是所有的假都相等, 比如: 0 != {}。

- 条件执行和if语句

- else字句

- elif字句 , 是 else if 的缩写

- 嵌套代码块

- 更复杂的条件:

- 1、比较运算符

- 除了基本的 > < == >= <= != 之外还有 x is y (x 和 y是同一个对象) x is not y (x, y不是同一个对象) x in y x not in y。 还有一个 x <> y就是x!=y

- 相等运算符 ==

- is:同一性运算符 : 判断两者是不是同一个对象

- in:成员资格运算符

- 字符串和序列比较

- 字符串可以按照字母顺序进行排列比较(String 通过 内置函数 ord() 获得每个字符的 Unicode 编码进行大小比较)

- 序列的比较也是从索引为0开始比较

- 布尔运算符

- and or not

- 断言: assert

age = -1
assert 0 < age < 100, "the age must be realitic"
Traceback (most recent call last):
File "E:/python/PythonCode/python_6.py", line 2, in <module>
assert 0 < age < 100, "the age must be realitic"
AssertionError: the age must be realitic


循环

while循还

for循环

numbers = [1, 2, 3, 4, 5,6 ,7 ,8]
for number in numbers:
print (number)
遍历


- range(0, 10):从0到10, 不对称边界
- range(99, 0, -1):从99到0, 一次一步, 最后一位为步长【为负则表示反向迭代】
- 遍历循环字典元素


d  = {"x":1, "y":2, "z":3}
for key in d:
print (key, "correseponds to", d[key])
x correseponds to 1
y correseponds to 2
z correseponds to 3


- for循环的一大好处是可以循环中使用序列解包


d  = {"x":1, "y":2, "z":3}
for key, value in d.items():
print (key, "correseponds to", value)
x correseponds to 1
y correseponds to 2
z correseponds to 3


- 一些迭代工具
- 并行迭代:


names = ["anna", "beth", "gg", "damon"]
ages = [12, 45, 32, 56]
print (list(zip(names, ages)))
for name, age in zip(names, ages):
print (name, "is", age, "years old")
*以下是输出结果*
[('anna', 12), ('beth', 45), ('gg', 32), ('damon', 56)]
anna is 12 years old
beth is 45 years old
gg is 32 years old
damon is 56 years old


- zip() 将两个序列“压缩”在一起, 然后返回一个元组的列表。 zip()处理不等长的序列时, 当最短序列“用完”的时候就会停止。
- 按索引迭代
- [按索引迭代](http://lib.csdn.net/article/python/32276)
- enumerate()函数




from math import sqrt
for n in range(99, 81, -1):
n = sqrt(n)
if n == int(n):
print (n)
else:
print ("Don't find")


- 在python中for语句竟然也可以用else


- 列表推导式 - 轻量级循环

- 列表推导式是利用其它列表创建新列表的一种方法, 工作方式类似于for循环

- 列表推导式

- 三人行(pass、del、exec)

- pass 语句相当于c语言里面的空语句

- del 删除不再使用的对象

scoundrel = {"age":42, "first name":"Robin", "lase name":"of Locksley"}# 构造一个字典
robin = scoundrel
scoundrel = None
robin = None
print (robin)
print (scoundrel)


当scoundrel, robin都不绑在子典上时, phthon解释器直接就删除了那个字典(这种行为称为垃圾收集), 当然也不止使用None才能“消失不见”

x = ["hello", "world"]
y = x
y[1] = "python"
print (x)
print (y)
del x
print (y)
print (x)


关于del理解上面代码, del不仅会移除一个对象的引用, 也会移除那个名字本身

- 使用exec和evel执行和求值字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: