zoukankan      html  css  js  c++  java
  • day18.条件,循环和其他语句

    导入模块
      import modu
      import modu1,modu2,...
      from modu import func1
      from modu import func1,func2,func3,...
      from modu import *
     
    为导入的模块或函数起别名
      import math as mymath
      from math import fabs as aa, sqrt as bb
     
    赋值魔法:
      序列解包:
        多个复制操作同时进行:x,y,z = 1,2,3
        交换两个或更多变量:x,y = y,x
        序列解包:sequence unpacking--将多个值的序列解开,然后放到变量的序列中,当函数或方法返回元组(或其他序列或可迭代对象)时,这个特性尤其有用。
        它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易访问。
        放置在赋值=号左边的变量个数必须与所解包的序列中的元素数量完全一致。
        py3中新增了另一个解包特性:可以像函数在参数列表中一样使用星号运算符。
        a,b,*rest = [1,2,3,4] ==> a = 1,b = 2,x = [3,4]
        星号*代表将所有其他的元素都收集到rest中
     
      链式赋值:
        x = y = 5 ===> x = 5,y = 5
        x,y是对用一个值的引用,互不干扰
     
      增量赋值:
        x += 1 ===> x = x + 1
        对于+-*/%等标准运算符都适用
        对于其他类型的数据也适用,只要二元运算符本身适用于这些数据类型
        x = 'abc'
        x *= 2 ===> 'abcabc'
        增量赋值可以使代码更加紧凑简练。
     
    语句块:缩排的乐趣
      语句块是在条件为真(条件语句)时执行,或者执行多次(循环语句)的一组语句。
      在代码前放置空格来缩进语句即可创建语句块。
      块中的每行都应该缩进相同的量。
      很多语言使用特殊单词或字符({)来表示一个语句块的开始,用另外的单词或字符(})表示语句块的结束。
      在python中,用冒号(:)来标识语句块的开始,块中的每一个语句都是缩进的(缩进量相同)。
      当回退到和已经闭合的块一样的缩进量时,就表示当前块已经结束了。
     
    条件和条件语句:
      1.布尔变量的作用
      2.条件执行和if语句
      3.else子句
      4.elif子句
      5.嵌套代码块
      6.更复杂的条件

    1.比较运算符
      ==,>,<,>=,<=,!=,is,is not,in,not in
      只有在比较两个相同或近似类型的对象,比较才有意义。
      在py3中,比较不兼容类型的对象已经不再可行。
      在python中,比较运算和赋值运算一样是可以连接的: 0<age<100
     
    2.相等运算符:判断两个值是否相等
     
    3.同一性运算符is:是否为同一个对象(id相同)
     
    4.成员资格运算符in
     
    5.字符串和序列比较:
      相同索引的元素进行比较
      字符串可以按照字母排列顺序比较A<Z<a<z
     
    6.布尔运算符(逻辑运算符):and or not

    短路逻辑(惰性求值):避免了无用的执行代码,可以作为一种技巧使用。
      name = input('').strip() or 'unknown'
      这类短路逻辑可以用来实现三元运算符的作用:
      a if b else c
      如果b为真,返回a,否则返回b
     
    断言(assert):
      断言的工作方式有点像if的变形:
      if not condition:
        print(1111)
      在我们调试代码或者初期测试时,与其在程序在晚些时候崩溃,不如在错误条件出现时直接让它崩溃。
      如果需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert语句就有用了。它可以在程序中设置检查点。
      age = input('请输入年龄').strip()
      assert 0<int(age)<150#在age不满足条件时直接报错
      条件后可以添加字符串,用来解释断言。
      assert 0<int(age)<150,'年纪大了'

     循环:为了在条件为真时,使代码重复执行多次。
      1.while循环:在任何条件为真的情况下重复执行一个代码块
      2.for循环:为一个可迭代对象的每一个元素都执行一个代码块
      3.循环遍历字典元素:
        for key in dict
        for key in dict.keys()
        for val in dict.values()
        for k,v in dict.items()
      4.一些迭代工具:
        1.并行迭代
          程序可以同时迭代两个序列:
          names = ['egon','alex','mxt']
          ages = [18,19,20]
          for i in range(len(ages)):
            print(names[i],ages[i])
          内置函数zip可以用来进行并行迭代,可以把多个序列压缩在一起,返回一个元祖的列表。zip可以应付不等长的序列,当最短序列用完时就会停止。
          list(zip(names,ages)) == [('egon', 18), ('alex', 19), ('mxt', 20)]
        2.编号迭代
          有时想要迭代序列中的对象,还要获取当前对象的索引。
          for x,y in enumerate(list):
            print(x,y)
        3.翻转和排序迭代
          reversed,sorted这两个内置函数,等同于列表的reverse和sort,但是可以作用于任何序列和可迭代对象上,不是修改原对象,且返回翻转或排序后的副本。
     
     
      跳出循环:
        1.break:跳出本层循环
        2.continue:跳出本次循环(跳过剩余的循环体,但不结束循环)
     
     
    pass
    什么都没有发生,在代码中做占位符使用

    del
    一般来说,python会删除那些不再使用的对象(因为使用者不会再通过任何变量和数据结构引用它们)。
    python的垃圾回收机制:python解释器会删除在内存中引用计数为0的值
    del语句会移除一个对象的引用和那个名字本身。
     exec+eval执行和求值字符串:
    有时可能会需要动态地创造python代码,然后将其作为语句执行或作为表达式计算。
    使用exec或eval可以执行存储在字符串中的python代码
    1.exec()
      exec('print(123)')
      exec函数可以执行存储在字符串中的python代码,但也可能会干扰命名空间。
      from math import sqrt
      exec 'sqrt = 5'
      print(sqrt(4))
      很多情况下,需要给它提供命名空间,使它不会干扰已有的变量。
      exec函数最有用的地方在于可以动态的创建代码字符串。
      如果字符串是从其他地方获得的,比如用户输入,那么几乎不能确定其中包含什么代码。
      为了安全起见,可以增加一个字典,起到命名空间的作用。
      from math import sqrt
      dd = {}
      exec 'sqrt=1' in dic
      sqrt(4)
     
    2.eval()
      eval(用于求值)是类似exec的内建函数。
      exec会执行一系列python语句。
      eval会计算python表达式,并且返回结果值。

     总结:
      1.打印:print也已打印由逗号隔开的多个值。参数有sep和end
      2.导入:import module
          import fun from module as xx
      3.赋值:通过序列解包和链式赋值功能,多个变量可以一次性赋值。
          增量赋值可以原地改变变量。
      4.块:块是通过缩排语句组成的一种方法。他们可以在条件和循环语句中使用。
      5.条件:条件语句/布尔表达式
          if/elif/else
          三元表达式: a if x==1 else b
      6.断言:assert 简单来说就是肯定某事为真。如果条件为假,断言会让程序报错。
      7.循环:可以为序列中的每一个元素执行一段语句块。
          continue跳出本次循环;break跳出本层循环。
      8.列表推导式:它不是真正的语句--是看起来像循环的表达式。
             可以基于已有列表根据各种条件生成新的列表。
      9.pass,del,exec,eval

     涉及到的函数:
      chr(n):当传入序号n时,返回一个字符(0<=n<256)
      eval(source[,globals[,locals]]):将字符串作为表达式计算,并返回结果
      enumerate(seq[,start]):产生用于迭代的(索引,值)对
      ord(c):返回单个字符的int值
      range(start,end,step):类似于列表切片,返回一个包含整数的序列
      reversed(seq):产生seq的反向版本,用于迭代
      sorted(seq,key,reverse):返回seq排序后的列表
      zip(seq1,seq2,...):创造用于并行迭代的心序列
  • 相关阅读:
    700. Search in a Binary Search Tree
    100. Same Tree
    543. Diameter of Binary Tree
    257. Binary Tree Paths
    572. Subtree of Another Tree
    226. Invert Binary Tree
    104. Maximum Depth of Binary Tree
    1、解决sublime打开文档,出现中文乱码问题
    移植seetafaceengine-master、opencv到ARM板
    ubuntu16.04-交叉编译-SeetaFaceEngine-master
  • 原文地址:https://www.cnblogs.com/maxiaotiaoshishui/p/7281015.html
Copyright © 2011-2022 走看看