zoukankan      html  css  js  c++  java
  • python中条件、循环等

    获取字典中任意的键-值对

    >>> x={'a':1,'b':2}
    >>> key,value=x.popitem()
    >>> key,value
    ('a', 1)
    >>> del x[key]
    
    Traceback (most recent call last):
      File "<pyshell#16>", line 1, in <module>
        del x[key]
    KeyError: 'a'
    >>> x
    {'b': 2}
    >>> x[key]=value
    >>> x
    {'a': 1, 'b': 2}
    >>> del x[key]

     增量赋值

    >>> x=2
    >>> x+=1
    >>> x*=2
    >>> x
    6
    >>> fnord='foo'
    >>> fnord+='bar'
    >>> fnord*=2
    >>> fnord
    'foobarfoobar'

    条件执行if语句

    >>> name=raw_input('?')
    ?Yq Z
    >>> if name.endswith('Z'):  
       print 'Hello,Mr.Z'
    
    Hello,Mr.Z

    else子句

    >>> name=raw_input('what is your name?')
    what is your name?Yq Z
    >>> if name.endswith('Z'):
        print 'Hello,Mr.Z'
    else:
        print 'Hello,stranger'
    
        
    Hello,Mr.Z

    elif子句 

    >>> num=input('Enter a number: ')
    Enter a number: 5
    >>> if num>0:
        print 'The number is position'
    elif num<0:
        print 'The number is negative'
    else:
        print 'The number is zero'
    
        
    The number is position

    条件嵌套语句

    >>> name=raw_input('What is your name?')
    What is your name?Yq Z
    >>> if name.endswith('Yq'):
        if name.startswith('Z'):
            print 'Hello,Yq Z'
        elif name.startswith('K'):
            print 'Hello,Zyq'
        else:
            print 'Hello,Yq'
    else:
        print 'Hello,stranger'
    
        
    Hello,stranger
    >>> number=input('Enter a number between 1 and 10:')
    Enter a number between 1 and 10:6
    >>> if number<=10 and number>=1:
        print 'Great!'
    else:
        print 'Wrong!'
    
        
    Great!
    >>> age=10
    >>> assert 0<age<100
    >>> age=-1
    >>> assert 0<age<100
    
    Traceback (most recent call last):
      File "<pyshell#21>", line 1, in <module>
        assert 0<age<100
    AssertionError

    while循环

    >>> x=1
    >>> while x<=100:
        print x
        x+=1
    >>> while not name:
        name=raw_input('Please enter your name:')
        print 'Hello,%s !' % name
    
        
    Please enter your name:zyq
    Hello,zyq !

    for循环

    >>> words=['this','is','an','ex','parrot']
    >>> for word in words:
        print word
    
        
    this
    is
    an
    ex
    parrot
    >>> range(0,10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> for i in range(1,8):
        print i
    
        
    1
    2
    3
    4
    5
    6
    7

    字典循环(迭代)

    >>> d={'x':1,'y':2,'z':3}
    >>> for key in d:
        print key,'corresponds to',d[key]
    
        
    y corresponds to 2
    x corresponds to 1
    z corresponds to 3

     并行迭代

      >>> names=['Anne','Beth','George','Damon']
      >>> ages=[12,19,18,20]

    >>> for i in range(len(names)):
        print names[i],'is',ages[i],'years old'
    
        
    Anne is 12 years old
    Beth is 19 years old
    George is 18 years old
    Damon is 20 years old
    >>> zip(names,ages)
    [('Anne', 12), ('Beth', 19), ('George', 18), ('Damon', 20)]
    >>> for name,age in zip(names,ages):
        print name,'is',age,'years old'
    
        
    Anne is 12 years old
    Beth is 19 years old
    George is 18 years old
    Damon is 20 years old
    >>> zip(range(5),xrange(100))
    [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

    编号迭代

    >>> d
    [1, 2, 4, 4]
    >>> for x in d:
        if x==4:
            d[d.index(x)]=6
    
            
    >>> d
    [1, 2, 6, 6]
    >>> S=['skj','kiu','olm','piy']
    >>> index=0>>> for s1 in S:
        if 'k' in s1:
            S[index]='HH'
        index+=1
    
        
    >>> S
    ['HH', 'HH', 'olm', 'piy']>>> for index,s2 in enumerate(S): #enumerate函数提供索引-值对
        if 'H' in s2:
            S[index]='DF'
    
            
    >>> S
    ['DF', 'DF', 'olm', 'piy']

     翻转、排序迭代

    >>> sorted([4,3,6,8,3])
    [3, 3, 4, 6, 8]
    >>> sorted('Hello,world!')
    ['!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
    >>> list(reversed('Hello,world!'))
    ['!', 'd', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H']
    >>> ''.join(reversed('Hello,world!'))
    '!dlrow,olleH'

     break跳出循环

    >>> for n in range(99,0,-1):
        m=sqrt(n)
        if m==int(m):
            print n
            break
    
        
    81

     while True/break

    >>> while True:
        word=raw_input('Please enter a word:')
        if not word:break
        print 'The word was '+word
    
        
    Please enter a word:f
    The word was f
    Please enter a word:

    循环中的else语句

    >>> for n in range(99,81,-1):
        m=sqrt(n)
        if m==int(m):
            print m
            break
    else:
        print 'h'
    
        
    h

     列表推导式-轻量级循环

    >>> [x*x for x in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> [x*x for x in range(10) if x%3==0]
    [0, 9, 36, 81]
    >>> [(x,y) for x in range(3) for y in range (3)]
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    >>> result=[]
    >>> for x in range(3):
        for y in range(3):
            result.append((x,y))
    >>> result
     [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    >>> girls=['Alice','Bernice','Clarice']
    >>> boys=['Chris','Arnold','Bob']
    >>> [b+'+'+g for b in boys for g in girls if b[0]==g[0]]
    ['Chris+Clarice', 'Arnold+Alice', 'Bob+Bernice'

     pass

    >>> if name=='Nsds':
        print 'Welcome!'
    elif name=='UK':
        #还没完
        pass
    elif name=='Bill':
        print 'Access Denied'
    else:
        print 'Nobody!'

     del x和y同时指向一个列表,但是删除x并不会影响y。删除的只是名称,不是列表本身(值)

    >>> x=['Hello','world']
    >>> y=x
    >>> y[1]='Python'
    >>> x
    ['Hello', 'Python']
    >>> del x
    >>> y
    ['Hello', 'Python']

    exec

    >>> exec "print 'Hello,world!'"
    Hello,world!
    >>> from math import sqrt
    >>> exec "sqrt=1"
    >>> sqrt(4)
    
    Traceback (most recent call last):
      File "<pyshell#36>", line 1, in <module>
        sqrt(4)
    TypeError: 'int' object is not callable
    
    #增加一个字典,起到命名空间的作用
    >>> from math import sqrt
    >>> scope={}
    >>> exec 'sqrt=1' in scope
    >>> sqrt(4)
    2.0
    >>> scope['sqrt']
    1

    注意:命名空间,称作作用域。可以把它想象成保存变量的地方,类似于不可见的字典。执行 x=1这类赋值语句时,就将键x和值1放在当前的命名空间内,这个命名空间一般来说都是全局命名空间。

    >>> len(scope)
    2
    >>> scope.keys()
    ['__builtins__', 'sqrt']

    eval 求值

    >>> scope={}
    >>> scope['x']=2
    >>> scope['y']=3
    >>> eval('x*y',scope)
    6
    >>> scope={}
    >>> exec 'x=2' in scope
    >>> eval('x*x',scope)
    4

  • 相关阅读:
    线性地址物理地址逻辑地址转换mmu
    C/c++ 宏返回值
    树的子结构
    合并两个排序的链表
    链表中倒数第k个结点
    数值的整数次方
    原码、反码与补码
    二进制中1的个数
    矩形覆盖
    变态跳台阶
  • 原文地址:https://www.cnblogs.com/nsds/p/6445869.html
Copyright © 2011-2022 走看看