zoukankan      html  css  js  c++  java
  • 初识Python(6)__Python条件和循环

    If 语句:

     If expression:
    
         Expr_true_suite

     多重条件表达式

    单个 if 语句可以通过使用布尔操作符 and , or 和 not实现多重判断条件或是否定判断条件.
    
    if not warn and (system_load >= 10):
    
    print "WARNING: losing resources"
    
    warn += 1
    
     

    else 语句

    如果 if 语句的条件表达式的结果布尔值为假, 那么程序将执行 else 语句后的代码. 它的语法你甚至可以猜到:

    if expression:
    
        expr_true_suite
    
    else:
    
        expr_false_suite

    样例代码:
    
    if passwd == user.passwd:
        ret_str = "password accepted"
        id = user.id valid = True
    
    else:
        ret_str = "invalid password entered... try again!"
        valid = False

    可以在 while 和 for 循环中使用 else 语句. 在循环中使用时, else子句只在循环完成后执行, 也就是说 break 语句也会跳过 else 块.

    # -*- coding: cp936 -*-
    
     def showMaxFactor(num):
        count = num / 2
        while count > 1:
           if num % count == 0:
                print 'largest factor of %d is %d' %(num, count)
                break
            count -= 1    #直到找到约数
    
        else:
            print num, 'is primer'
    
     for eachNum in range(35,40):
    
        showMaxFactor(eachNum)
    
       
    >>>
    largest factor of 35 is 7
    
    largest factor of 36 is 18
    
    37 is primer
    
    largest factor of 38 is 19
    
    largest factor of 39 is 13
    
    >>> 

    elif (即 else-if )语句

    if expression1:
        expr1_true_suite
    
    elif expression2:
        expr2_true_suite
    
    elif expressionN:
        exprN_true_suite
    
    else:
        none_of_the_above_suite

    条件表达式(即"三元操作符")      #这个操作应该很牛逼···精炼,和列表解析表达式有得一拼

    背景:Python 在很长的一段时间里没有条件表达式(C ? X : Y), 或称三元运算符. ( C 是条件表达式; X 是 C 为 True 时的结果, Y 是 C 为 False 时的结果)

    Python 2.5 集成的语法确定为: X if C else Y

    >>> x, y = 4, 3
    >>> smaller = x if x < y else y
    >>> smaller
    3

    while 语句

    while 语句是一个条件循环语句. 与 if声明相比, 如果 if 后的条件为真, 就会执行一次相应的代码块. 而 while 中的代码块会一直循环执行, 直到循环条件不再为真.

    #while 循环的语法如下:
    
    while expression:
        suite_to_repeat
    
     #while 循环的 suite_to_repeat 子句会一直循环执行, 直到 expression 值为布尔假.
    #样例:
    
    count = 0
    
    while (count < 9):
        print 'the index is:', count
        count += 1

    for 语句

    for语句提供了 Python 中最强大的循环结构.它可以遍历序列成员, 可以用在 列表解析 和 生成器表达式中, 它会自动地调用迭代器的 next()方法, 捕获 StopIteration 异常并结束循环(所有这一切都是在内部发生的).

    #语法如下:
    
    for iter_var in iterable:
        suite_to_repeat

    每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对象)的当前元素, 提供给 suite_to_repeat 语句块使用.

    #样例:
    
    >>> for eachLetter in 'Names':
    ... print 'current letter:', eachLetter
    ...
    
    current letter: N
    current letter: a
    current letter: m
    current letter: e
    current letter: s
    
     #or通过序列项迭代
    
    >>> nameList = ['Walter', "Nicole", 'Steven', 'Henry']
    >>> for eachName in nameList:
    ... print eachName, "Lim"
    ...
    
    Walter Lim
    Nicole Lim
    Steven Lim
    Henry Lim
    
    ###使用项和索引迭代###
    两全其美的办法是使用内建的 enumerate() 函数, 它是 Python 2.3 的新增内容. 代码如下:
    
    >>> nameList = ['Donn', 'Shirley', 'Ben', 'Janice',
    ... 'David', 'Yen', 'Wendy']
    
    >>> for i, eachLee in enumerate(nameList):
    ... print "%d %s Lee" % (i+1, eachLee)
    ...
    
    1 Donn Lee
    2 Shirley Lee
    3 Ben Lee
    4 Janice Lee
    5 David Lee
    6 Yen Lee
    7 Wendy Lee
    
     

    关于enumerate() 函数:

    在同时需要用到index和value值的时候可以用到enumerate,参数为可遍历的变量,如字符串,列表等,返回enumerate类。

    ###例:
    
    import string
    
    s = string.ascii_lowercase
    e = enumerate(s)
    print s
    
    print list(e)
    
    输出结果为:
    
     [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'), (7, 'h'),
    
     (8, 'i'), (9, 'j'), (10, 'k'), (11, 'l'), (12, 'm'), (13, 'n'), (14, 'o'), (15,
    
     'p'), (16, 'q'), (17, 'r'), (18, 's'), (19, 't'), (20, 'u'), (21, 'v'), (22, 'w
    
    '), (23, 'x'), (24, 'y'), (25, 'z')]
    
     
    
    ###用enumerate将string中的1都找出来,用enumerate实现:
    
    def fun(line):
    
        return  ((ids,int(val)) for ids,val in enumerate(line) if val != '0')
    print list(fun("000111000111"))
    
     输出结果为:
    [(3, 1), (4, 1), (5, 1), (9, 1), (10, 1), (11, 1)]
    
     

    参考于:http://www.2cto.com/kf/201212/179579.html

    关于range() 内建函数

    ### range() 的完整语法###
    Python 提供了两种不同的方法来调用 range() . 完整语法要求提供两个或三个整数参数:
    
    range(start, end, step =1)
    
    range() 会返回一个包含所有 k 的列表, 这里 start <= k < end , 从 start 到 end , k 每次递增 step . step 不可以为零,否则将发生错误.
    
    >>> range(2, 19, 3)
    [2, 5, 8, 11, 14, 17]
    
    如果只给定两个参数,而省略 step, step 就使用默认值 1 .
    
    >>> range(3, 7)
    [3, 4, 5, 6]
    
    我们来看看解释器环境下的例子
    
    >>> for eachVal in range(2, 19, 3):
    ... print "value is:", eachVal
    ...
    
    value is: 2
    value is: 5
    value is: 8
    value is: 11
    value is: 14
    value is: 17
    
     
    
    ###range() 简略语法###
    range() 还有两种简略的语法格式:
    
    range(end)
    
    range(start, end)
    
    我们在第 2 章看到过最短的语法 接受一个值, start 默认为 0 , step 默认为 1 , 然后
    
    range()返回从 0 到 end 的数列.
    >>> range(5)
    [0, 1, 2, 3, 4]
    
    range() 的中型版本和完整版本几乎完全一样, 只是 step 使用默认值 1 . 现在我们在
    Python 解释器中试下这条语句:
    
    >>> for count in range(2, 5):
    ... print count
    ...
    
    2
    3
    4
    
     

    break 语句

    break 语句可以结束当前循环然后跳转到下条语句

    ###样例:
    
    count = num / 2
    
    while count > 0:
        if num % count == 0:
            print count, 'is the largest factor of', num
            break
        count -= 1

    continue 语句

    当执行遇到continue 语句时, 程序会终止当前循环,并忽略剩余的语句, 然后回到循环的顶端. 在开始下一次迭代前,如果是条件循环, 我们将验证条件表达式.如果是迭代循环,我们将验证是否还有元素可以迭代. 只有在验证成功的情况下, 我们才会开始下一次迭代.

    valid = False
    
    count = 3
    
    while count > 0:
        input = raw_input("enter password")
    # check for valid passwd
        for eachPasswd in passwdList:
            if input == eachPasswd:
                valid = True
                break
            if not valid: # (or valid == 0)
                print "invalid input"
                count -= 1
            continue
            else:
                 break

    这里例子结合使用了 while , for , if , break 以及 continue , 用来验证用户输入. 用户有三次机会来输入正确的密码, 如果失败, 那么 valid 变量将仍为一个布尔假( 0 ), 然后我们可以采取必要的操作阻止用户猜测密码.

    pass 语句

    如果你在需要子语句块的地方不写任何语句, 解释器会提示你语法错误. 因此, Python 提供了pass 语句, 它不做任何事情。

    def foo_func():
        pass
    
    或是
    
    if user_choice == 'do_calc':
        pass else:
            pass

    这样的代码结构在开发和调试时很有用, 因为编写代码的时候你可能要先把结构定下来,但你不希望它干扰其他已经完成的代码. 在不需要它做任何事情地方, 放一个pass 将是一个很好的主意.

    辅助语句在条件及循环语句中的应用范围

     

    pass 在任何需要语句块(一个或多个语句)的地方都可以使用(例如 elif , else , clasa , def , try , except , finally ).

  • 相关阅读:
    javascript cookie
    mark几个比较好的配色网站
    Javascrip 淡入淡出思路
    实验报告:统计字符串中子字符串出现的次数
    Javascript计算器
    《node入门》学习
    配置ionic(低版本)
    eclipse环境配置
    关于文档加载的方法
    javascript基础-《web前端最佳实践》
  • 原文地址:https://www.cnblogs.com/sunnyjiangjie/p/4097179.html
Copyright © 2011-2022 走看看