• python学习(五) 条件、循环和其他语句


                      第五章 条件、循环和其他语句

    5.1 print和import的更多信息

    5.1.1 使用逗号输出

    >>> print('age',43,45)         // 可以用逗号隔开多个表达式,中间会有空格
    age 43 45

    5.1.2 把某事件作为另外事件的导入

    import somemodule

    from somemodule improt aaa, bbb, ccc

    from somemodule import *

    如果两个模块有同名函数怎么办?

    第一种方法可以用模块引用:

    module1.open()

    module2.open()

    另外一种方法是:给模块起别名,或者给函数起别名

    >>> import math as foobar
    >>> foobar.sqrt(3)
    1.7320508075688772

    5.2 赋值魔法

    5.2.1 序列解包

    >>> x,y,z = 1,2,3                 // 可以为多个值同时赋值
    >>> print(x,y,z)
    1 2 3

    >>> x,y                                 // 交换两个值
    (1, 2)
    >>> x,y = y, x
    >>> x, y
    (2, 1)    

    序列解包(或递归解包):将多个值的序列解开,放到变量的序列中。

    当函数或方法返回元组(或其他序列或可选迭代对象)时,这个特性尤为重要。

    >>> source = {'name':'Robin','girlfriend':'marion'}
    >>> key, value = source.popitem()  // 函数返回的值打包成元组。
    >>> key, value
    ('girlfriend', 'marion')

    5.2.2 链式赋值

    >>> x = y = "fsdfsd"
    >>> x, y
    ('fsdfsd', 'fsdfsd')

    5.2.3 增量赋值

    +=  /  *=

    5.3 语句块:缩排的乐趣

    语句块:条件为真时,执行或者执行多次的一组语句。在代码前放置空格来缩进语句即可创建语句块

      python中,冒号用来标识语句块的开始;块中的语句都是缩进的,并且缩进量相同。当回退到和已闭合

    的块一样的缩进量时,就表示当前块已经结束。

    5.4 条件和条件语句                         

    5.4.1 这就是布尔变量的作用

    真值:下面的值在作为布尔表达式的时候,会被解释器看做假(false)

    False        None      0(包括浮点,长整和其他类型)         ""               ()          []            {}

    5.4.2 条件执行和if语句

    5.4.3 else子句

    5.4.4 elif

    5.4.5 嵌套代码块

    name= input("what is your name?")
    if name.endswith('Gumby'):
        if name.startswith('Mr.'):
            print("hello MR Gumyby")
        elif name.startswith('Mrs.'):
            print('Hello Mrs. Gumy')
        else:
            print('hello Gumby')
    else:
        print('hello, stranger')
    
    name = input('jfsdljfs')

    5.4.6 更复杂的条件

    (1)比较运算符

    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

     0 < age < 100   //  运算符可以连接

    (2)相等运算符

        ==

    (3)is: 同一运算符

    >>> x = y = [1,2,3]
    >>> z = [1,2,3]
    >>> x == y
    True
    >>> x == z                 //   相等性判定,判断数值是否相等
    True
    >>> x is y
    True
    >>> x is z                  // 同一性判定, 判断对象是否是同一个     
    False

    (4)in:成员资格运算符

    (5)字符串和序列比较 

    >>> "abc" < "edf"
    True

    >>> "abc".lower() == "def".upper()
    False

    >>> [1,[1,3]] < [1,[1,4]]
    True

    (6)布尔运算符

    if   XX and YY  or ZZ   // 也满足短路逻辑
    5.4.7 断言 

    >>> age = 10
    >>> assert 100<age<10000
    Traceback (most recent call last):
    File "<pyshell#4>", line 1, in <module>
    assert 100<age<10000
    AssertionError

     5.5 循环

    5.5.1  while循环

    x = 1

    while x <= 100:

      print(x)

      x +=1

    5.5.2 for 循环

    >>> words = ['this','is','an','ex','parrot']
    >>> for word in words:
    print(word)

    this
    is
    an
    ex
    parrot
    >>>

    >>> for xx in range(10):          // range函数类似于分片,包含下限,但是不包含上限
    print(xx)

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>>

    5.5.3 循环遍历字典 

    >>> d = {'x':1, 'y':2, 'z':3}
    >>> d
    {'x': 1, 'y': 2, 'z': 3}
    >>> for key in d:
    print(key, " -- ",d[key])          // 字典的迭代顺序是不一定的

    x -- 1
    y -- 2
    z -- 3 

    >>> for key, value in d.items():
    print(key, '-', value)                // 字典的迭代顺序是不一定的

    x - 1
    y - 2
    z - 3
    >>>

    5.5.4 一些迭代工具

    python中有一些函数非常好用,有些在itertools中,有一些是内建函数

    (1)并行迭代

    >>> names = ['anne','beth','george','damon']
    >>> ages = [12, 45, 32, 102]
    >>> for i in range(len(names)):
    print(names[i],'   ',ages[i])

    >>> for name, age in zip(names, ages):   //  zip函数可以进行并行迭代,zip函数也可以用于不等长的列表,短的“用完”就停止
    print(name,age)

    anne 12
    beth 45
    george 32
    damon 102

    (2 ) 按索引迭代

    strings = ['aa','bb','cc']

    >>> for index, string in enumerate(strings):
    if 'aa' in string:
    strings[index] = "zzzz"

    >>> strings
    ['zzzz', 'bb', 'cc']

    (3)翻转和排序迭代

    reversed和 sorted函数

    >>> sorted([4,6,9,2])
    [2, 4, 6, 9]

    >>> var = reversed('hello world')
    >>> var
    <reversed object at 0x0000020AF7EEC7B8>
    >>> list(var)
    ['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']

    >>> ''.join(reversed('hello world'))
    'dlrow olleh'

    5.5.5 跳出循环

    (1)break: 跳出循环

    (2)continue: 跳出本次循环,执行下一轮循环

    (3)while true用法

    while True:
        word = input("please input a word?")
        if not word:break
        print('this workd was' +word)
    
    name = input('jfsdljfs')

    5.6 列表推倒式-轻量级循环

    利用其它列表创建新列表

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

    >>> [x*x for x in range(0, 10) if x % 3 ==0]   // 增加一个if部分
    [0, 9, 36, 81]

    >>> [(x,y) for x in range(0, 10) for y in range(0,4)]   // 也可以有多个for语句
    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3), (5, 0), (5, 1), (5, 2), (5, 3), (6, 0), (6, 1), (6, 2), (6, 3), (7, 0), (7, 1), (7, 2), (7, 3), (8, 0), (8, 1), (8, 2), (8, 3), (9, 0), (9, 1), (9, 2), (9, 3)]
    >>>

    5.7 三人行

    5.7.1 占位符:pass

    var = "fsdf"
    if var == "fsdfsd":
        print("fsd")
    elif var == "vcxfds":
        pass
    elif var == "fsdfs":
        print("fsd")
    name = input("fsdfsd")

    5.7.2  使用del删除

    >>> x = ['hello','world']
    >>> y = x
    >>> del y                   //删除y后,并不会影响x, 因为只是删除y这个名字,而值不会删除。值是通过垃圾回收来删除的
    >>> x
    ['hello', 'world']

    5.7.3 使用exec和eval执行和求值字符串

    >>> exec("print('fds')")   // 执行字符串中存储的代码,这样会有安全漏洞
    fds

    >>> eval("5*5")            // 和exec类似,不同点是,eval会计算值并且返回结果
    25

  • 相关阅读:
    Unity3d设置QualitySettings为Beautiful Xcode发布错误
    滚轮拉近相机
    (转)oracle
    (转)Oracle存储过程基本语法
    (转)Oracle执行字符串
    (转)Oracle 临时表用法
    安装包范例
    (转)使用PowerDesigner生成HTML功能
    (转)winform下TCP通信的简单应用
    (转)winform下UPD通信的简单应用
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7221743.html
Copyright © 2020-2023  润新知