• Python基础之流程控制(if/while/for)


    • 学习目录
    • 流程控制
    • 注意事项
    • if(条件判断)
    • while(循环)
    • break / continue
    • for(循环)
    • 列表推导
    • range() 及 xrange()

    0x01 流程控制

    • 类别
      * 条件判断
      -- 主要通过if语句完成
      * 循环

    0x02 注意事项

    • 缩进
    • 冒号
    • 逻辑值(bool)
      * True --- 非空,非零数
      * False --- 0,None,空值
    • 循环
      * while 循环
      * for 循环

    0x03 if语句

    • 条件判断用法
      * 单分支
      * 多分支
      -- if ... else ...
      -- if ... elif ... else ...
    • 语法
      * 单分支
    if 判断条件:
        执行语句
    
    • 语法
      * 多分支
           -- if ... else ...  
    
    if 判断条件:
        执行语句
    else:
        执行语句
    
          -- if ... elif ... else ...
    
    if 判断条件:
        执行语句
    elif 判断条件:
        执行语句
    else:
        执行语句
    
    • Example: 判断两值大小(单分支之 if)
    x = int(input("输入 x 的值为:"))
    y = int(input("输入 y 的值为:"))
    if x > y:
        print("x 大于 y")
    
    • Example: 判断两值大小(多分支之 if .. else ...)
    x = int(input("输入 x 的值为:"))
    y = int(input("输入 y 的值为:"))
    if x > y:
        print("x 大于 y")
    else:
        print("x 小于 y")
    
    • Example: 判断数值值大小(多支循环之if ... elif ... else)
    x = int(input("输入 x 的值为:"))
    y = int(input("输入 y 的值为:"))
    if x > y:
        print("x 大于 y")
    elif x < y:
        print("x 小于 y")
    elif x == y:
        print("x 等于 y")
    else:
        print("更多判断方式")
    

    0x04 while循环

    • 用途
      * 由条件控制
      * 直到条件为假时,才推出循环; 表达式为逻辑表达式,返回值为True或False
    • 语法
    while 判断条件:
         执行语句
    

    PS:
    避免写成死循环

    • Example: 死循环及执行效率比较
    # 死循环 ,条件为 1 或 0 执行效率高
    while 1:
        print("执行程序")
    
    # 死循环 ,条件为 True 或 False 执行效率低
    while True:
        print("执行程序")
    

    0x05 break/continue/pass

    • break
      * 跳出最近一级 for 或 while循环
      * break 中止情况下, 后续程序体,不会执行
    • continue
      * 循环执行程序体下一次迭代
    • pass
      * 占位, 什么也不需要做
    • Example: 判断从键盘获取的字符,根据判断进行执行程序
    for x in range(2, 10):
        for y in range(2, x):
            if x % y == 0:
                print(x, ' = ', x, '*', x//y)
                break
        else:
            print(x, 'is a prime number')
    
    • Example: 判断10以内的奇偶数
    for num in range(2, 10):
        if num % 2 == 0:
            print("偶数的值为: {0}".format(num))
            continue
        print("奇数值为: {0}".format(num))
    
    • Example: 判断从键盘获取的字符,根据判断进行执行程序
    x = input("输入字符: ")
    while x != 'q':
        if x == "q":
            print("退出程序操作")
            break
        elif x == "esc":
            print("请输入 'q ' 退出程序")
            continue
        else:
            print("输入有误,重新输入")
            continue
    
    • Example: pass用法
    while 1:
        pass
    

    0x06 for循环

    • 用途
      * 主要序列(字符串、列表、元组、字典等)对象进行循环
    • 语法
    for item in sequence:
          执行语句
    
    • 结合字典方法,字典操作
    # 遍历字典key
    for k in a.keys():
      print v
    
    # 遍历字典value  
    for v in a.values():
      print v
    
    # 遍历字典key及value   
    for k,v in a.items():
      print k,v
    
    # 把字典遍历后,转换成列表对象   
    for k,v in a.iteritems():
      print k,v
    
    • for ... else ...
    for item in sequence:
          执行语句
    else:
          执行语句
    
    • Example: 循环输出一组序列
    #  循环输出1到9的数值  
    for i in range(1, 10):
        print(i)
    
    # 循环打印出列表元素   
    li = ['aa', 'bb', 'cc', 'dd', 'ff']
    for i in li:
        print(i)
    
    • Example: 乘法口诀
    # python2 打印乘法口诀表
    for x in range(1, 10):
        for y in range(1, x+1):
            print("{0} * {1} = {2}").format(x, y, x * y),           # 注意与 py2 区别
            if x == y:
                print(" ")
    
    
    # python3 打印乘法口诀表
    for x in range(1, 10):
        for y in range(1, x+1):
            print(("{0} * {1} = {2}").format(x, y, x * y), end="")   # 注意与 py2 区别
            if x == y:
                print(" ")
    

    0x07 循环嵌套

      《 待完善 》
    

    0x08 列表推导

    1、列表 ---> [ ]
    2、字典 ---> ( )
    3、集合 ---> { }

    • 列表
    variable = [out_exp_res for out_exp in input_list if out_exp == 2]
    
    out_exp_res:  列表生成元素表达式,可以是有返回值的函数   
    for out_exp in input_list:  迭代input_list将out_exp传入out_exp_res表达式中   
    if out_exp == 2:  根据条件过滤哪些值可以   
    
    • 字典
    variable = ( out_exp_res for out_exp in input_list if out_exp == 2 )
    
    • 集合
    variable = { out_exp_res for out_exp in input_list if out_exp == 2 }
    
    • Example: 求被 3 整除的数
    multiples = [i for i in range(10) if i % 3 is 0]
    print(multiples)
    
    # Output:  [0, 3, 6, 9]
    
    • Example: 合并大小写,组合成新字典
    mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
    mcase_frequency = {
        k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
        for k in mcase.keys()
        if k.lower() in ['a','b']
    
    # Output:  {'a': 17, 'b': 34}
    
    • Example: key 和 value 相互交换
    mcase = {'x': 5, 'y': 4000}
    mcase_frequency = {v: k for k, v in mcase.items()}
    print(mcase_frequency)
    
    # Output:  {4000: 'y', 5: 'x'}
    
    • Example: 求数值的平方
    squared = {x**2 for x in [8, 1, 6]}
    print(squared)
    
    # Output:  set([64, 1, 36])
    

    0x09 range() 及 xrange()

    • range()
      * 生成即占用内存空间
      * 返回一个可迭代对象
      * 用于列表或整型
      * py2返回的是列表
    • 语法
     range(结束位置) 
     range(起始位置, 结束位置, 步长) 
    
    • Example: range() 用法
    # 生成 0 到 9 的序列(不包含数值 10)   
    for num in range(10):
        print(num)
    
    • xrange()
      * 不占用内存空间。需要时,才调用内存
      * 生成一个生成器
      * 返回可迭代对象
      * py3已被range()替代
    • 语法
    xrange(结束位置)
    xrange(开始位置,  结束位置,  步长)
    
    • Example: xrange() 用法
    # 只有结束位置   
    li = list(xrange(10))
    for num in li:
        print(num)
    
    # 起始位置、结束位置   
    li = list(xrange(2, 10))
    for num in li:
        print(num)
    
    # 起始位置、结束位置、步长      
    li = list(xrange(2, 10, 3))
    for num in li:
        print(num)
    
    • Example: 猜数字(xrange在py2存在,py3只支持range)
    import sys
    import random
    import time
    
    a = random.randint(1, 10)
    
    for i in range(1, 4):
        num = int(input("输入数字:"))
        second = 3 - i
        if num == a:
            print("你赢了")
            sys.exit()
        elif num > a:
            print("猜大了")
            print("你还有 {0} 次机会".format(second))
            print("*" * 30)
            time.sleep(1)
        elif num < a:
            print("猜小了")
            print("你还有 {0} 次机会".format(second))
            print("*" * 30)
            time.sleep(1)
        else:
            print("你输了")
    
  • 相关阅读:
    冲突域和广播域的区分
    internet 的一词多义
    大神洗礼第四讲——函数相关及编程技巧
    旋转字符串算法由浅入深
    一个交换程序的通用版本
    想起一些事情,都很遥远
    [转载]创业感想
    [转载]javascript小技巧
    [转载]在Asp.Net 2.0中应用DataFormatString
    [转载]C#的String.Format格式化举例
  • 原文地址:https://www.cnblogs.com/RobinChow/p/8699223.html
Copyright © 2020-2023  润新知