03-python基础知识-循环结构

循环结构

循环结构(while)

  • 格式:

    while 表达式:
    	语句块
    

    执行流程:当程序执行到while语句时,首先判断表达式的真假。若表达式的值为真,则执行缩进的语句块,之后返回表达式继续判断;若表达式的值为假,则跳过缩进的语句块执行。

  • 说明:

    • 表达式:也叫循环条件
    • 语句块:也叫循环体
    • 死循环:循环条件一直成立
    • break:跳出循环
    • continue:结束本次循环,进入下次循环
    • else:对应的语句块,循环正常退出时会执行,非正常退出(break)时不执行

循环结构(for-in)

  • 说明:也是一种循环结构,经常用于便利可迭代对象,如:字符串、列表、元组、字典等

  • 格式:

    for x in y:
    	语句块	
    

    执行流程:x一次代表y种的一个元素,遍历结束循环也就结束了。

列表生成式

  • range:

    # 一个对象,保存了产生连续整数的算法,可以节约空间
    # 可以指定起始位置,默认为0
    # print(range(10))
    
    # 可以进行遍历
    for i in range(10):
        print(i)
    
    # 可以转换为列表
    print(list(range(2, 10)))
    
  • 列表生成式

    # 列表生成式:可以快速方便地生成列表
    print([i for i in range(1, 11)])
    print([i for i in 'abcdefg'])
    print([i*2 for i in range(1, 11)])
    print([i*i for i in range(1, 11)])
    print([str(i) for i in range(1, 11)])
    print([i for i in range(1, 11) if i % 2 == 0])
    # 生成的列表可以与遍历的内容没有一毛钱关系
    print([250 for i in range(1, 11)])
    

循环嵌套

  • 循环能否嵌套

    • 答:能
  • 循环嵌套示例

    # 外层循环控制打印多少行
    for i in range(1, 11):
        # print('*' * i)
        # 内存循环控制每一行多少个
        for j in range(i):
            print('*', end=' ')
        print()
    

    练习:使用while实现一遍

  • 思考:列表排序实现,冒泡排序法思路(升序排序)

    lt = [8, 3, 6, 9, 5, 2, 4, 1, 7]
    第一轮:[3, 6, 8, 5, 4, 1, 7, 9]
    第二轮:[3, 6, 5, 4, 1, 7, 8, 9]
    第三轮:[3, 5, 4, 1, 6, 7, 8, 9]
    
    • 参考示例:
    # 冒泡排序:升序排序
    lt = [8, 3, 6, 9, 5, 2, 4, 1, 7]
    n = len(lt)
    # 外出循环控制排序多少轮
    for i in range(n-1):
        # 内存循环控制相邻两个元素的比较
        for j in range(n-1-i):
            if lt[j] > lt[j+1]:
                # 通用交换元素方式
                # temp = lt[j]
                # lt[j] = lt[j+1]
                # lt[j+1] = temp
                # python中特有方式
                lt[j], lt[j+1] = lt[j+1], lt[j]
    
    print(lt)
    
  • 选择排序

    思路:先取出一个位置,用该位置的元素与后面的所有元素挨个比较,不合适就发生交换。
    示例:lt = [8, 3, 6, 9, 5, 2, 4, 1, 7]
    	第一轮:1, 8, 6, 9, 5, 3, 4, 2, 7
    	第二轮:1, 2, 8, 9, 6, 5, 4, 3, 7
    	第三轮:1, 2, 3, 9, 8, 6, 5, 4, 7
    

字符串操作

  • 切割与拼接

    s = 'I love you more than i can say'
    # 切割字符串
    # sep:指定按照什么进行切割,默认按照空格切割
    # maxsplit:指定最大切割次数,默认不限制次数
    # ret = s.split(sep='abc', maxsplit=1)
    # 从右边进行切割
    ret = s.rsplit(' ', maxsplit=1)
    print(ret)
    
    s = 'Hello\nworld'
    # 按照换行进行切割
    print(s.splitlines())
    
    s = 'I love you more than i can say'
    ret = s.split()
    # print(ret)
    # 字符串拼接
    s2 = '*'.join(ret)
    print(s2)
    
  • 查找统计判断

    s = 'Hi buddy, if you have something to say, than say; if you have nothing to say, than go.'
    
    # 子串查找:找到首次出现的位置,返回下标,找不到返回-1
    # ret = s.find('hello')
    # 从后面查找
    # ret = s.rfind('to')
    # 统计子串出现的次数
    # ret = s.count('if')
    # 判断是否已指定内容开头
    # ret = s.startswith('Hi')
    # 判断是否已指定内容结尾
    ret = s.endswith('go.')
    print(ret)
    
  • 转换及替换

    s = 'hellO worlD!'
    # 转换为全大写
    print(s.upper())
    # 转换为全小写
    print(s.lower())
    # 大小写转换
    print(s.swapcase())
    # 首字母大写
    print(s.capitalize())
    # 每个单词首字母大写
    print(s.title())
    # 用指定的内容替换指定内容,还可以值替换次数
    print(s.replace('l', 'L', 2))
    
  • 类型判断

    s = 'abcABC2'
    # 是否是全大写
    print(s.isupper())
    # 是否是全小写
    print(s.islower())
    # 是否每个单词首字母都大写
    print(s.istitle())
    # 是否是全数字字符
    print(s.isdecimal())
    # 是否是全字母
    print(s.isalpha())
    # 是否全是字母或数字
    print(s.isalnum())
    

猜你喜欢

转载自blog.csdn.net/weixin_44147782/article/details/85266363