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

    条件,循环和其他语句

    print 输出多个用 逗号隔开
    >>> print 'hello','world',' !'
    hello world  !

    --------------------------------------------

    为函数提供别名
    >>> import math as qiao
    >>> qiao.sqrt(9)
    3.0
    >>> from math import sqrt as chao
    >>> chao(16)
    4.0

    --------------------------------------------

    多个赋值操作同时进行
    >>> x,y,z=1,2,3
    >>> x
    1
    >>> print x,y,z
    1 2 3
    >>> a,b,rest=[1,2,3]
    >>> rest
    3
    >>> x,y,z=1,2
    Traceback (most recent call last):
      File "<pyshell#98>", line 1, in <module>
        x,y,z=1,2
    ValueError: need more than 2 values to unpack
    注意:赋值个数与变量个数一致,否则报错

    python 3.0 特性:
    >>> a,b,rest*=[1,2,3,4]
    rest结果[3,4]

    交互2个或者更多变量的值
    >>> x
    1
    >>> y
    2
    >>> x,y=y,x
    >>> print x,y
    2 1

    元组赋值
    >>> values=1,2,3
    >>> values
    (1, 2, 3)
    >>> a,b,c=values
    >>> a
    1
    >>> b
    2
    >>> c
    3

    获取和删除字典中任意的键值对的时候,popitem方法以元组返回
    >>> persons={'name':'john','age':42,'sex':'male'}
    >>> key,value=persons.popitem()
    >>> key
    'age'
    >>> value
    42
    >>> persons
    {'name': 'john', 'sex': 'male'}

    链式赋值
    x=y=somefunction()
    和下面的语句效果一样
    x=y
    y=somefunction()
    注意:和下面的语句不一定等价
    x=somefunction()
    y=somefunction()


    增量赋值
    >>> x=2
    >>> x+=1
    >>> x
    3
    >>> x*=2
    >>> x
    6

    同样适合其他类型
    >>> ff='foo'
    >>> ff+='ds'
    >>> ff
    'foods'
    >>> ff*=2
    >>> ff
    'foodsfoods'

    -----------------------------------------------------

    False None   0  ""  ()  []  {}  对于布尔类型都是假
    标准值False  None,所有数字0(包括浮点型,长整形其他类型),空序列(空串,空元组和列表)和空字典都是假
    >>> True
    True
    >>> False
    False
    >>> True == 1
    True
    >>> False == 1
    False
    >>> True + False + 2
    3

    bool 函数可以转换其他值
    >>> bool('I tasd asd')
    True
    >>> bool(3)
    True
    >>> bool('')
    False
    >>> bool(0)
    False
    >>> bool([])==bool('')==False
    True
    >>> bool()
    False

    -----------------------------------------------------

    if 条件
    >>> name = raw_input('name:')
    name:qiaochao
    >>> if name.endswith('ao'):
     print 'hello qiaochao'
     
    hello qiaochao

    -------------------------------------------------------

    esle 语句
    name = raw_input('please input your name : ')
    if name.endswith('chao'):
     print 'hello qiaochao'
    else:
     print 'hello stranger'

    D:>python test.py
    please input your name : qiaochao
    hello qiaochao

    D:>python test.py
    please input your name : laojia
    hello stranger

    elif 子句
    num = input('please input a number : ')
    if num > 0 :
     print 'number is positive'
    elif num < 0 :
     print 'number is negative'
    elif num == 0 :
     print 'number is 0'

    D:>python test.py
    please input a number : 8
    number is positive

    D:>python test.py
    please input a number : -9
    number is negative

    D:>python test.py
    please input a number : 0
    number is 0

    ------------------------python 中的比较运算符------------------------------

    x==y    ----------------   x等于y
    x<y    --------------- x小于y
    x>y    ----------------- x 大于y
    x>=y   --------------  x大于等于y
    x!=y  ---------------  x 不等于y
    x is y  -------------   x 和y 是同一个对象
    x is not y  -----------  x和y是不同的对象
    x in y   -------------  x 是y容器(例如序列)中的成员
    x not in y  --------- x不是y容器(例如序列)中的成员

    注意: 在python 中几个运算符是可以一起用的
    例如:
    >>> 0<1<100
    True

    -----------------------------------------------------------------------------

    >>> x=[1,2,3]
    >>> y=[2,4]
    >>> x is not y
    True
    >>> del x[2]
    >>> y[1]=1
    >>> y.reverse()
    >>> y
    [1, 2]
    >>> x
    [1, 2]
    >>> x == y
    True
    >>> x is y
    False
    注意:x 和 y 是2个序列 ,== 运算符来判断两个对象是否相等,is判定两者是否等同(同一个对象)

    -----------------------------------------------------------------------------------

    字符串的比较
    字符串可以按照字母顺序进行比较
    >>> "abc" > "aaa"
    True
    >>> "Abc" > "abc"  ---- 注意大小写
    False

    序列的比较类似
    >>> [1,2] < [2,1]
    True
    >>> [2,[1,3]] < [2,[1,4]]
    True

    --------------------------------------------------------------------------------------

    if 条件判断中的 and 和 or
    num = input('please input a number (between 0-10) : ')
    if num <= 10 and num >= 0:
     print 'rigth'
    else:
     print 'wrong'

    D:>python test.py
    please input a number (between 0-10) : 9
    rigth

    D:>python test.py
    please input a number (between 0-10) : 99
    wrong

    ---------------------------------------------------------------------------------------

    断言

    >>> assert 0<age<100
    >>> age = -1
    >>> assert 0<age<100

    Traceback (most recent call last):
      File "<pyshell#174>", line 1, in <module>
        assert 0<age<100
    AssertionError

    确保程序中的某个条件必须为真才执行,assert 就有用了

    ----------------------------------------------------------------------------------------

    while循环

    x=1
    while x<=100:
     print x
     x+=1

    name = ''
    while not name:
     name = raw_input('input your name : ')
    print 'your name is ' + name

    D:>python test.py
    input your name :
    input your name :
    input your name : qiaochao
    your name is qiaochao

    ----------------------------------------------------------------------------------

    for循环

    range函数:
    >>> range(0,10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(99,81,-1)    ------------------ 第三个参数为步长
    [99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82]
    >>> range(99,81,-2)
    [99, 97, 95, 93, 91, 89, 87, 85, 83]

    for num in range(0,100):
     print num

    break 和 continue 继续适用
    ------------------------------------------------------------------------------------

    zip 函数
    用来进行并行迭代,可以把2个序列“压缩”在一起,然后返回一个元组列表
    >>> names=['qiao','chao','ca','ss']
    >>> ages=[25,26,22,21]
    >>> zip(names,ages)
    [('qiao', 25), ('chao', 26), ('ca', 22), ('ss', 21)]

    names=['qiao','chao','ca','ss']
    ages=[25,26,22,21]
    zip(names,ages)
    for name,age in zip(names,ages):
     print name,' is ',age,' years old'

    D:>python test.py
    qiao  is  25  years old
    chao  is  26  years old
    ca  is  22  years old
    ss  is  21  years old

    注意:zip函数可以用于任意多的序列,很重要的一点zip可以应付不等长的序列,当最短的序列"用完"的时候就会停止
    如:
    >>> zip(range(5),range(7))
    [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
    >>> zip(range(5),xrange(1000000))   ------------- 不推荐range 替换xrange ,range会计算所有的数字,花费很长时间,xrange只计算前5个
    [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

    ---------------------------------------------------------------------------------------

    列表推导式
    >>> [x*x for x in range(5)]
    [0, 1, 4, 9, 16]

    可以在 循环中做条件筛选
    >>> [x*x for x in range(10) if x%3 == 0]
    [0, 9, 36, 81]
    >>> girls=['alice','ben','clinda']
    >>> boys=['chia','mm','ada']
    >>> [b+'+'+g for b in girls for g in boys if b[0]==g[0]]
    ['alice+ada', 'clinda+chia']

    ------------------------------------------------------------------------------------------

    1. pass
    程序什么事情也不做
    注意:python中空代码块是非法的
    num = input('please input a number : ')
    if num > 0 :
     print 'number is positive'
    elif num < 0 :
     #还没完
     pass
    elif num == 0 :
     print 'number is 0'

    2. del 删除
    >>> x=1
    >>> x
    1
    >>> del x
    >>> x
    Traceback (most recent call last):
      File "<pyshell#214>", line 1, in <module>
        x
    NameError: name 'x' is not defined

    >>> x=['hellp','jjas']
    >>> y=x
    >>> y[1]='qiao'
    >>> y
    ['hellp', 'qiao']
    >>> x
    ['hellp', 'qiao']
    >>> del x
    >>> y
    ['hellp', 'qiao']
    注意:x和y都指向同一个列表,但是删除x 不会影响y,原因就是删除的只是名称,而不是列表本身。
    python解释器会负责内存的回收

    3. exec
    执行一个字符串的语句是exec
    >>> exec 'print "hell workd"'
    hell workd

    4. eval
    计算python表达式(以字符串的形式书写),并且返回结果值。
    >>> eval(raw_input('enter numvers :'))
    enter numvers :
    1+2+3*4
    15

    ------------------------------------------------------------------------

  • 相关阅读:
    在MaxCompute中配置Policy策略遇到结果不一致的问题
    通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析
    阿里小二的日常工作要被TA们“接管”了!
    2018年DDoS攻击全态势:战胜第一波攻击成“抗D” 关键
    基于OSS+DataLakeAnalytics+QuickBI的Serverless的查询分析和可视化BI
    威胁快报|首爆,新披露Jenkins RCE漏洞成ImposterMiner挖矿木马新“跳板”
    Lesson 7 Nehe
    Lesson 7 Nehe
    Lesson 7 Nehe
    Lesson 6 Nehe
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206911.html
Copyright © 2011-2022 走看看