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

条件, 循环和其他语句

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

  • 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执行和求值字符串

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值