zoukankan      html  css  js  c++  java
  • 老男孩自动化运维开发第2天

    目录导航:

      1. 容器类型强制转换
      2. 二级容器
      3. 算数运算符
      4. 赋值运算符与成员运算符
      5. 身份运算符
      6. 位运算符
      7. 代码块
      8. 流程控制
      9. 多项分支
      10. 循环分支
      11. 单循环练习
      12. 字符串的相关操作 
      13.多循环练习
      14. for 循环

    1. 容器类型强制转换

    var1 = "今天天气转冷了"
    var2 = [1,2,3]
    var3 = (4,5,6)
    var4 = {"a","b","c"}
    var5 = {"a":1,"b":2}
    
    # (1)str 强制转换成字符串
    """在原数据类型的两边套上引号"""
    res = str(var2)
    res = str(var3)
    res = str(var4)
    print(res,type(res))
    
    # repr 在不转移字符串的情况下,原型化输出
    res_new = repr(res)
    print(res_new)
    
    # (2)list 强制转换成列表
    """
    如果是字符串,那么就是把每一个字符都当成新的元素组合成列表
    如果是list , tuple ,set 就是在原数据类型的两边改成[]
    如果是字典 , 只是获取字典的键组成列表
    """
    res = list(var1)
    res = list(var3)
    res = list(var4)
    res = list(var5)
    print(res,type(res))
    
    # (3)tuple 强制转换成元组
    """
    如果是字符串,那么就是把每一个字符都当成新的元素组合成元组
    如果是list , tuple ,set 就是在原数据类型的两边改成()
    如果是字典 , 只是获取字典的键组成元组
    """
    res = tuple(var1)
    res = tuple(var2)
    res = tuple(var5)
    print(res,type(res))
    
    # (4)set 强制转换成集合
    """
    如果是字符串,那么就是把每一个字符都当成新的元素组合成集合
    如果是list , tuple ,set 就是在原数据类型的两边改成{}
    如果是字典 , 只是获取字典的键组成集合
    """
    res = set(var1)
    res = set(var2)
    res = set(var5)
    print(res,type(res))
    

    2. 二级容器

      外面是一个容器类型数据,里面的元素还是一个容器类型的数据

    # 二级列表
    lst = [1,2,3,4,[5,6,7,8]]
    # 二级元组
    tup = (1,2,3,(7,8,9))
    # 二级集合
    setvar = {"a","b",(10,11,12)}
    # 二级字典
    dic = {"a":1,"b":2,"c":{"d":3,"e":4}}
    
    # 四级容器
    container = [1,2,3,(4,5,6,[7,89,9,{"a":1,"b":"王文"}])]
    
    res = container[-1]
    print(res)# (4, 5, 6, [7, 89, 9, {'a': 1, 'b': '王文'}])
    
    res2 = res[-1]
    print(res2) # [7, 89, 9, {'a': 1, 'b': '王文'}]
    
    res3 = res2[-1]
    print(res3) # {'a': 1, 'b': '王文'}
    
    res4 = res3["b"]
    print(res4) # 王文
    
    # 简写
    res = container[-1][-1][-1]["b"]
    print(res)
    

      等长的二级容器

    # 等长的二级容器
    """
    (1) 首先要求里面的每一个元素都是容器
    (2) 要求容器里面的元素个数都是相同的
    """
    lst = [(1,2,3),["a","b","c"],{1.1,2.3,False}]
    tup = ([1,2],(3,4))
    
    
    # ### 强制转换成字典
    """
    (1) 需要是等长的二级容器
    (2) 里面的元素必须是2个
    """
    # (1)外面的容器是列表
    lst = [["a",1],("b",2)] #(推荐)
    
    # 如果是字符串,长度只能是2个,有一定的局限性(不推荐使用)
    lst = ["a2","c3"] # c3344
    # 虽然使用集合在语法上不会报错,但是有语义上的毛病(不推荐使用)
    lst = [{"a",3},{"b",4}]
    
    dic = dict(lst)
    print(dic)
    
    # (2)外面的容器是元组
    tup = (["a",1],("b",2)) #(推荐)
    dic = dict(tup)
    print(dic)
    
    # (3)外面的容器是集合
    setvar = {("e",6),("f",7)}
    dic = dict(setvar)
    print(dic)
    
    """
    Number => int float bool complex
    容器 => str list tuple set dict
    这些强转函数默认在不传值的时,都会创建一个当前数据类型的值
    """
    res = dict()
    print(res)
    

    3. 算数运算符

    var1 = 7
    var2 = 4
    # +
    res = var1 + var2
    print(res)
    
    # -
    res = var1 - var2
    print(res)
    
    # * 
    res = var1 * var2
    print(res)
    
    # / 结果永远是小数
    res = var1 / var2
    res = 8 / 4
    print(res)
    
    # // 地板除
    # 如果被除数或者除数是整数,那么结果也是整数
    res = 8 // 4
    # 如果被除数或者除数是小数,那么结果也是小数
    res = 8 // 4.0
    print(res)
    
    # % 取余
    res = var1 % var2
    res = 81 % 4
    # 先计算正常的余数,然后根据被除数身上的符号,决定余数的符号是正还是负
    res = -81 % 4 # -1 + 4 = 3
    res = 81 % -4 # 1 + (-4) = -3
    # 如果被除数和除数都是负号,就是单纯的在余数的身上套上负号即可;
    res = -81 % -4# -1
    print(res)
    
    # ** 幂运算
    res = 3 ** 2
    res = 3 ** 3
    print(res)
    
    
    # (2)比较运算符:  > < >= <= == !=   
    """只有两个结果,要么是True 真的,要么是False 假的"""
    # >
    res = 15 > 8
    print(res)
    
    # <
    res = 15 < 8
    print(res)
    
    # >=
    res = 15 >= 15
    print(res)
    
    # <= 
    res = 15 <= 15
    print(res)
    
    # == 比较等号两边的值是不是相同
    """
    a = 5  从右向左看,把5这个值赋值给变量a
    a == 5 比较,比较等号两边的这个值是不是一样的,如果一样,返回True,反之返回False
    """
    
    res = 5 == 5
    print(res)
    
    # != 比较等号两边的值是不是不相同
    res = 6 != 10
    print(res)
    

    4. 赋值运算符与成员运算符

    # = 赋值运算符
    var1 = 17
    var2 = 4
    
    # +=
    # var1 += var2
    # '''var1 = var1 + var2'''
    # print(var1)
    
    # -=
    # var1 -= var2
    # '''var1 = var1 - var2'''
    # print(var1)
    
    # *=
    # var1 *= var2
    # '''var1 = var1 * var2'''
    # print(var1)
    
    # /=
    # var1 /= var2
    # '''var1 = var1 / var2'''
    # print(var1)
    
    # //=
    # var1 //= var2
    # '''var1 = var1 // var2'''
    # print(var1)
    
    # %=
    # var1 %= var2
    # '''var1 = var1 % var2'''
    # print(var1)
    
    # **=
    # var1 = 9
    # var2 = 2
    # var1 **= var2
    # '''var1 = var1 ** var2'''
    # print(var1)
    
    # (4)成员运算符:  in 和 not in (针对于容器型数据)
    # 字符串
    """必须是一个连续的片段"""
    strvar = "我爱你,亲爱的菇凉,一看到你,我就心慌"
    res = "爱" in strvar
    res = "亲爱的" in strvar
    res = "你到" in strvar
    print(res)
    
    # list tuple set
    listvar = ["戴鹏","谢岳鹏","余文杰","钟平福","李辉","叶渊明"]
    res = "谢岳鹏" in listvar
    res = "余文杰" not in listvar
    setvar = {"张俊文","黄其新","李建波","陈勇"}
    res = "张俊文" not in setvar
    tuplevar = ("猴闪","周青","郑飞")
    res = "猴闪" not in tuplevar
    print(res)
    
    # dict
    """在字典当中,成员运算符判断的是字典的键,不是值"""
    dictvar = {"花和尚":"鲁智深","智多星":"无用","鼓上骚":"石阡"}
    res = "鲁智深" in dictvar
    res = "智多星" in dictvar
    res = "鼓上骚" not in dictvar
    print(res)
    

    5. 身份运算符

      is 和 is not (检测两个数据在内存当中是否是同一个值)

    # int : -5 ~ 正无穷
    var1 = 18
    var2 = 18
    # 比较两个变量指向的这个值是不是同一个(即地址相同)
    res = var1 is var2
    print(res)
    
    # float: 非负数
    var1 = 5.17
    var2 = 5.17
    res = var1 is not var2
    print(res)
    
    # complex 实数+ 虚数永远不相同(只有虚数的情况下例外)
    var1 = 7j
    var2 = 7j
    res = var1 is var2
    print(res)
    
    # bool 只要值相同就一样
    var1 = True
    var2 = False
    res = var1 is not var2
    print(res)
    
    # 容器类型数据
    lst1 = [1,2]
    lst2 = [1,2]
    print(lst1 is lst2)
    
    print("<=============================>")
    # ### (6)逻辑运算符:  and or not
    """
    and 逻辑与
    or  逻辑或
    not 逻辑非
    """
    
    # 逻辑与 and
    """全真则真,一假则假"""
    res = True and True   # True
    res = True and False  # False
    res = False and False # False
    res = False and True  # False
    print(res)
    
    # 逻辑或 or
    """一真则真,全假则假"""
    res = True or True  # True
    res = True or False # True
    res = False or True # True
    res = False or False# False
    print(res)
    
    # 逻辑非 not (真变假,假变真)
    res = not True
    res = not False
    print(res)
    
    # 逻辑短路 (后面的代码不执行)
    """
    	(1)True or 表达式
    	(2)False and 表达式
    """
    True or print(123)
    False or print(123)
    
    False and print(456)
    True and print(456)
    
    res = True or 7
    res = 18 or True
    res = False and 90
    res = 0 and True
    res = 18 and 0j
    print(res)
    
    # 逻辑运算符的优先级
    # () > not > and > or
    res = 5 or 6 and 7 # 5 or 7 => 5
    res = (5 or 6) and 7 # 5 and 7 => 7
    res = not (5 or 6 ) and 7 # not 5 and 7  => False and 7
    print(res)
    
    # 只有True or 表达式,在多个表达式的情况下仍然短路,但是False  and 表达式,在多个表达式的情况下不一定短路
    res = 1>2 and 3<4 or 5<6 and 7<8 # False and True or True and True => False or True => True
    res = True or 3>4 and 5<6 or 5>100 # True or False and True or False => True or False or False => True
    print(res)
    

    6. 位运算符

      & |  ^ << >> ~

    # & 按位与
    var1 = 19
    var2 = 15
    res = var1 & var2
    print(res)
    """
    000 ... 10011
    000 ... 01111
    000 ... 00011
    """
    
    # | 按位或
    var1 = 19
    var2 = 15
    res = var1 | var2
    print(res)
    """
    000 ... 10011
    000 ... 01111
    000 ... 11111
    """
    
    # ^ 按位异或 (两个值不一样,返回True,反之,返回假(比如都是0 或者 都是1))
    var1 = 19
    var2 = 15
    res = var1 ^ var2
    print(res)
    """
    000 ... 10011
    000 ... 01111
            11100
    """
    
    # << 左移  乘法:5 * 2的3次幂
    res = 5 << 3
    print(res)
    """
    000 ... 101
    000 ..10100
    """
    # >> 右移  除法:5 // 2的1次幂
    res = 5 >> 1
    print(res)
    """
    000 ... 101
    000 ... 001
    """
    
    # 按位非  公式:-(n+1)
    res = ~-11
    print(res)
    
    """
    运算符的优先级:
    	运算符优先级最高的是 ** 幂运算
    	运算符优先级最低的是 = 赋值运算符
    	
    	整体来看:
    		一元运算符 > 二元运算符
    		
    	一元运算符 : 同一时间,操作一个数字的 [~ , -]
    	二元运算符 : 同一时间,操作二个数字的 [+ - * / ... ]
    	
    	二元运算符: 整体用() 来提升运算的优先级
    	逻辑运算中: () > not > and > or
    	算数运算符: 乘除 > 加减
    	按位运算符: << >> > & > ^ > |
    	
    	大体来看:
    		算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
    		赋值运算符最后收尾,用来接收最后运算的数据
    """
    
    res = 5+5 << 6 // 3 is 40 and True
    # res = 10 << 2 is 40 and True
    # res = 40 is 40 and True
    # res = True and True => True
    print(res)
    
    # 用括号来提升优先级,让别人看懂代码
    res = (5+5) << (6 // 3) is 40 and True
    

    7. 代码块

      以冒号最为开始,用缩进来划分同一个作用域,这个整体叫做代码块

    """作用域:作用的区域"""
    """
    一个tab 大概是4个空格的距离
    """
    
    if 5 == 5:
    	print(111)
    	print(222)
    	
    """
    if 5 == 7:
    	print(333)
    	print(444)
    	print(555)
        print(666)
    """
    """
    在代码块中,
    	要么全部使用	缩进
    	要么全部使用4个空格来表达缩进
    	不能	和空格混合在一起使用
    	即使在外观上来看,距离相同,也不是一个代码块;
    """
    
    
    # php (了解)
    """
    if(5 == 5){
    	print(333)
    print(444)
    print(666)
    }
    """
    

    8.流程控制

    """
    流程:代码执行的过程
    流程控制:对代码执行的过程一种管控
    
    三大结构:
    	(1) 顺序结构: 代码默认从上到下依次执行
    	(2) 分支结构: 4种分支
    	(3) 循环结构: while  for
    
    分支结构:
    	(1) 单项分支
    	(2) 双项分支
    	(3) 多项分支
    	(4) 巢状分支
    """
    # 单项分支
    """
    if 条件表达式:
    	code1
    	code2
    	
    如果条件表达式 成立, 就执行对应的代码块,反之,不执行
    """
    
    chenzhenlian = "美女"
    if chenzhenlian == "巫婆":
    	print("给她买倩碧")
    	print("给她买香奈儿")
    	print("给她买香迪奥")
    	print("给她买肾宝")
    	print("给他买包,因为包治百病")
    	
    # 双项分支 (二选一)
    """
    if 条件表达式:
    	code1
    	code2
    else:
    	code3
    	code4
    	
    如果条件表达式 成立, 就执行if这个代码块中的内容
    如果条件表达式 不成立,就执行else这个代码块中的内容
    
    if 对应的代码块也叫作 真区间
    else 对应的代码块也叫作 假区间
    
    """
    
    shisongya = "穷鬼"
    if shisongya == "有钱人":
    	print("我就嫁给他")
    else:
    	print("你是个好人")
    
    # ### 模拟网站登录
    """
    账户: admin
    密码: 123
    如果账户密码满足条件,
    	就登录成功
    	否则登录失败
    """
    # input 等待用户输入字符串
    """
    res = input("请输入您的姓名:")
    print(res,type(res))
    
    """
    
    username = input("请输入您的账户:")
    password = input("请输入你的密码:")
    
    if username == "admin" and password == "123":
    	print("登录成功")
    else:
    	print("登录失败")
    

    9. 多项分支

    """
    if 条件表达式1:
    	code1
    elif 条件表达式2:
    	code2
    elif 条件表达式3:
    	code3
    else:
    	code4
    先判定条件表达式1 是否成立,如果为真,执行对应的1号代码块,反之,向下继续判断
    在判定条件表达式2 是否成立,如果为真,执行对应的2号代码块,反之,向下继续判断
    在判定条件表达式3 是否成立,如果为真,执行对应的3号代码块,反之,向下继续判断
    ...
    当所有的条件都不满足了,执行else这个区间的代码块
    
    elif 可以出现0个或者多个
    else 可以出现0个或者1个
    """
    
    youqian = True
    youfang = True
    youche = False
    youyanzhi = False
    youtili = False
    
    if youqian == True:
    	print("我就嫁给你1")
    elif youfang == True:
    	print("我就嫁给你2")
    elif youche == True:
    	print("我就嫁给你3")
    elif youyanzhi == True:
    	print("我就嫁给你4")
    elif youtili == True:
    	print("我就嫁给你5")
    else:
    	print("你是个好人")
    
    print("<===============>")
    # 巢状分支 (单项分支 双项分支 多项分支的互相嵌套)
    if youqian == True:
    	if youfang == True:
    		if youche == True:
    			if youyanzhi == True:
    				if youtili == True:
    					print("我嫁给你了~恭喜你")
    				else:
    					print("你补一点大腰子再过来")
    			else:
    				print("去韩国整完容在找我")
    else:
    	print("我给你钱,打车走")
    
    
    
    
    #出题 height
    #女生找对象
    	# 男生在1米~1.5米之间 小强 你在哪里?
    	# 男生在1.5~1.7米之间 没有安全感~
    	# 男生 1.7~ 1.8米之间 帅哥 留个电话
    	# 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗
    
    # 方法一 python 特有的写法
    """
    height = 1.7
    if 1<=height<1.5:
    	print("小强 你在哪里?")
    elif 1.5 <= height < 1.7:
    	print("没有安全感~")
    elif 1.7 <= height < 1.8:
    	print("帅哥 留个电话")
    elif 1.8<= height < 2:
    	print("帅哥 你建议多一个女朋友吗")
    """
    
    # 方法二 通用写法
    height = float(  input("请输入您的身高:")  )
    # print(height,type(height))
    if height >= 1 and height < 1.5:
    	print("小强 你在哪里?")
    elif height >= 1.5 and height < 1.7:
    	print("没有安全感~")
    elif height >= 1.7 and height < 1.8:
    	print("帅哥 留个电话")
    elif height >= 1.8 and height < 2:
    	print("帅哥 你建议多一个女朋友吗")
    else:
    	print("没有匹配的选项")
    

    10. 循环分支

    """
    特点:循环可以减少代码冗余,提升效率,便于后期维护
    
    # 语法;
    while 条件表达式:
    	code1
    	code2
    	...
    如果条件表达式成立,就执行循环体中的代码,反之不执行
    """
    
    # 打印 1~100
    # (1)初始化一个变量i
    i = 1
    # (2)写上循环的判断条件
    while i<=100:
    	# (4) 写上对应的逻辑
    	print(i)
    	# (3)自增自减的i值
    	i += 1 # i = i + 1
    
    """
    代码解析:
    先初始化变量i = 1
    
    # 第一次循环
    i = 1 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(1) i += 1 => i = 2
    # 第二次循环
    i = 2 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(2) i += 1 => i = 3
    # 第三次循环
    i = 3 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(3) i += 1 => i = 4
    
    ....
    ....
    以此类推
    
    当 i = 101 , i <= 100  条件不满足,返回False , 终止循环.
    """
    
    # 计算1~100的累加和
    # 方法一
    i = 1
    total = 0
    while i<=100:
    	total += i
    	i+=1
    print(total)
    
    """
    # 代码解析:
    # 第一次循环
    i=1 i<=100 条件满足,返回True  total += i => total = total + i => total = 0 + 1  , i+=1 => i = 2
    
    # 第二次循环
    i=2 i<=100 条件满足,返回True  total += i => total = total + i => total = 0 + 1 + 2  , i+=1 => i = 3
    
    # 第三次循环
    i=3 i<=100 条件满足,返回True  total += i => total = total + i => total = 0 + 1 + 2 + 3  , i+=1 => i = 4
    
    ...
    依次循环
    
    当i = 101的时候  i<=100 条件不满足,返回False ,循环终止
    total = 0 + 1 + 2 + 3 + ... + 100
    """
    
    # 死循环
    """
    while True:
    	print(1)
    """
    
    # 方法二
    sign = True
    i = 1
    total = 0
    while sign:
    	total += i
    	i+=1
    	# 手动判断如果i 已经加到了101 ,就意味着循环应该终止了;
    	if i == 101:
    		sign = False
    print(total)
    

    11. 单循环练习

    # (1)打印一行十个小星星
    
    # help 查看帮助文档
    """
    help(print)
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    print("*",end="")
    """
    # 用while 改写
    i = 0
    while i<10:
    	print("*",end="")
    	i+=1
    
    print()
    
    # (2)用变量拼接字符串的形式,打印一行十个小星星
    i = 0
    strvar = ""
    while i<10:
    	strvar += "*"
    	i+=1
    print(strvar)
    
    # (3)打印一行十个小星星 奇数个打印★ 偶数个打印☆
    i = 0
    while i < 10:
    	if i % 2 == 0:
    		print("★",end="")
    	else:
    		print("☆",end="")
    	i+=1
    
    print()
    # (4)用 一个循环 打印十行十列小星星
    """
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    """
    
    """
    0 % 2 = 0
    1 % 2 = 1
    2 % 2 = 0
    3 % 2 = 1
    
    0 % 3 = 0
    1 % 3 = 1
    2 % 3 = 2
    3 % 3 = 0
    
    0 % 8 = 0
    1 % 8 = 1
    2 % 8 = 2
    3 % 8 = 3
    4 % 8 = 4
    5 % 8 = 5
    6 % 8 = 6
    7 % 8 = 7
    8 % 8 = 0
    9 % 8 = 1
    10 % 8 = 2
    任意数和n进行取余,余数范围: 0~(n-1)
    0123456789
    **********
    10111213141516171819
    * * * * * * * * * * 
    20212223242526272829
    * * * * * * * * * *
    ...
    90919293949596979899
    * * * * * * * * * *
    9 ~ 99的时候 要添加换行
    """
    
    i  = 0 
    while i<100:
    	# 打印星星
    	print("*",end="")
    	# 打印换行
    	if i % 10 == 9:
    		print()
    	i+=1
    
    
    # (5)一个循环 打印十行十列隔列变色小星星(一个循环)
    """
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    ★☆★☆★☆★☆★☆
    """
    
    i  = 0 
    while i<100:
    	# 打印星星
    	if i % 2 == 0:
    		print("★",end="")
    	else:
    		print("☆",end="")
    	
    	# 打印换行
    	if i % 10 == 9:
    		print()
    	i+=1
    
    # (6)一个循环 打印十行十列隔行变色小星星(一个循环)
    """
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    ★★★★★★★★★★
    ☆☆☆☆☆☆☆☆☆☆
    """
    
    """
    0 // 3 = 0
    1 // 3 = 0
    2 // 3 = 0
    3 // 3 = 1
    4 // 3 = 1
    5 // 3 = 1
    6 // 3 = 2
    
    
    
    0 // 5 = 0
    1 // 5 = 0
    2 // 5 = 0
    3 // 5 = 0
    4 // 5 = 0
    
    5 // 5 = 1
    6 // 5 = 1
    7 // 5 = 1
    8 // 5 = 1
    9 // 5 = 1
    
    
    
    
    任意数和n进行地板除,会出现n个相同的数字
    
    
    0 // 10 = 0
    1 // 10 = 0
    2 // 10 = 0
    3 // 10 = 0
    4 // 10 = 0
    5 // 10 = 0
    6 // 10 = 0
    7 // 10 = 0
    8 // 10 = 0
    9 // 10 = 0
    
    10 // 10 = 1
    11 // 10 = 1
    12 // 10 = 1
    13 // 10 = 1
    14 // 10 = 1
    15 // 10 = 1
    16 // 10 = 1
    17 // 10 = 1
    18 // 10 = 1
    19 // 10 = 1
    
    20~29 => 10个相同的2
    30~39 => 10个相同的3
    ...
    90~99 => 10个相同的9
    相同的数字分别从0~9
    """
    
    
    i  = 0 
    while i<100:
    	# 打印星星
    	if i // 10 % 2 == 0:
    		print("★",end="")
    	else:
    		print("☆",end="")
    
    
    	# 打印换行
    	if i % 10 == 9:
    		print()
    	i+=1
    

    12. 字符串的相关操作 

    # (1)字符串的拼接 +
    strvar1 = "我恨你,"
    strvar2 = "你为什么不爱我"
    res = strvar1 + strvar2
    print(res)
    # += 
    res += "!!!" # res = res  + "!!!"
    print(res)
    
    # (2)字符串的重复  * 
    strvar = "重要的事情说三遍!"
    res = strvar * 3
    print(res)
    
    # (3)字符串跨行拼接 
    strvar = "sdfsjdfjsdfjshjfdhjsdfjsdfsdfsdfffffffffffffffffffffffffffffffffffffffffffffff" 
    "sdfsdf sdfsdfsdfsfdsdfsfsd"
    print(strvar)
    
    # (4)字符串的索引
    # 正向索引  0 1 2345
    strvar =   "我的baby"
    # 逆向索引 -6-5-4-3-2-1
    print(strvar[3],strvar[-3])
    
    # (5)字符串的切片: 截取
    # 语法 => 字符串[::]  完整格式:[开始索引:结束索引:间隔值]
    	# (1)[开始索引:]  从开始索引截取到字符串的最后
    	# (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
    	# (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
    	# (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
    	# (5)[:]或[::]  截取所有字符串
    	
    
    # (1)[开始索引:]  从开始索引截取到字符串的最后
    strvar = "如果遇到你是一种错,那我宁愿一错再错"
    res = strvar[2:]
    print(res)
    	
    # (2)[:结束索引]  从开头截取到结束索引之前(结束索引-1)
    res = strvar[:4]
    print(res)
    	
    # (3)[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)
    res = strvar[11:14] # 我宁愿 11~13
    print(res)
    	
    # (4)[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取字符
    res = strvar[::2]  # 正向截取
    # 0 2 4 6 8 10 12 14 .... 
    res = strvar[::-1] # 逆向截取
    # -1 -2 -3 -4 -5 -6 -7 ...
    print(res)
    
    # (5)[:]或[::]  截取所有字符串
    str_new = strvar[:]
    str_new = strvar[::]
    print(str_new)
    

    13.多循环练习

    # (1)打印十行十列小星星 (用两个循环)
    
    j = 0
    while j < 10:
    
    	# 打印一行十个小星星 **********
    	i = 0
    	while i<10:
    		print("*",end="")
    		i+=1
    
    	# 打印换行 
    
    	print()
    
    	j+=1
    	
    # (2)打印十行十列隔列换色小星星
    
    # ★☆★☆★☆★☆★☆
    
    j = 0
    while j < 10:
    
    	# 打印一行十个小星星 **********
    	i = 0
    	while i<10:
    		if i % 2 == 0:
    			print("★",end="")
    		else:
    			print("☆",end="")
    		i+=1
    
    	# 打印换行 
    
    	print()
    
    	j+=1
    
    
    # (3)打印十行十列隔行换色小星星
    
    j = 0
    while j < 10:
    
    	# 打印一行十个小星星 **********
    	i = 0
    	while i<10:
    		if j % 2 == 0:
    			print("★",end="")
    		else:
    			print("☆",end="")
    		i+=1
    
    	# 打印换行 
    
    	print()
    
    	j+=1
    
    # (4)99乘法表
    # 方向一 (升序 1-9)
    i = 1
    while i <= 9:	
    	# 打印表达式
    	j = 1
    	while j<=i:
    		# print(i,j)
    		print("%d*%d=%2d " % (i,j,i*j),end="")
    		j+=1
    		
    	# 打印换行
    	print()
    	
    	i+=1
    	
    # 方向二 (降序 9-1)
    print("<===>")
    i = 9
    while i >= 1:	
    
    	j = 1
    	while j<=i:
    		# print(i,j)
    		print("%d*%d=%2d " % (i,j,i*j),end="")
    		j+=1
    		
    	print()
    	
    	i-=1
    
    
    # (5)100 ~ 999 找吉利数字 111 222 123 321 888 ...
    """
    // 地板除可以获取到一个数高位
    %  取余可以获取到一个数的低位
    
    789
    
    个位: 789 % 10 => 9
    十位: 789 // 10 % 10 => 8
    百位: 789 // 100 => 7
    """
    # 方法一
    i = 100
    while i <= 999:
    
    	# 个位
    	gewei = i % 10
    	# 十位
    	shiwei = i // 10  % 10
    	# 百位
    	baiwei = i // 100
    	
    	if shiwei == gewei and shiwei == baiwei :
    		print(i)
    	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
    		print(i)
    	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
    		print(i)
    
    	i+=1
    
    print("<====>")
    # 方法二
    i = 100
    while i<=999:
    	# 强转成字符串
    	num = str(i)
    	# 通过下标获取个十百
    	gewei = int( num[-1] )
    	shiwei = int(num[-2])
    	baiwei = int(num[-3])
    	
    	if shiwei == gewei and shiwei == baiwei :
    		print(i)
    	elif shiwei == gewei - 1 and shiwei == baiwei + 1:
    		print(i)
    	elif shiwei == gewei + 1 and shiwei == baiwei - 1:
    		print(i)
    
    	i+=1
    

    14. for 循环

      遍历数据时使用

    """遍历,循环,迭代是一个意思:把容器里面的每一个元素都重新获取出来"""
    """
    # while 循环在遍历数据时,有一定的局限性,for循环应用而生,
    	for   循环专门用来遍历数据的
    	while 循环一般用于复杂逻辑操作
    	
    # lst = [1,2,3,4]
    lst = {"a","b","c"}
    i = 0
    while i<len(lst):
    	# print(i)
    	print(lst[i])
    	i+=1
    """
    """
    # for 循环语法:
    for i in 可迭代性数据
    可迭代性数据:(容器类型数据,range对象,迭代器)
    """
    # 字符串
    container = "你的酒窝没有酒,但是我却醉的一塌糊涂"
    # 列表
    container = ["猴山","薇薇","刘琦","余建","谢峰","王文"]
    # 元组
    container = ("猴山","薇薇","刘琦","余建","谢峰","王文")
    # 集合
    container = {"猴山","薇薇","刘琦","余建","谢峰","王文"}
    # 字典  如果是字典,遍历的是字典的键
    container = {"czl":"美丽大方","ssy":"老练沉稳","hqx":"抠脚大叔","zjw":"成功人士"}
    
    for i in container:
    	print(i)
    
    		
    # 变量的解包
    a,b = (1,2)
    a,b = [3,4]
    a,b = {"a","b"}
    a,b = {"a1":1,"b1":2}
    a,b,c = ("王健林","王思聪","王妈妈")
    # print(a,b,c)
    
    # 遍历等长的二级容器
    lst = [("王健林","王思聪","王妈妈") , ["马云","麻花藤","马妈妈"],{"王宝强","马蓉","宋小宝"}]
    for a,b,c in lst:
    	print(a,b,c)
    
    # 遍历不等长的二级容器
    lst = [("王健林","王思聪","王妈妈") , ["马云","马妈妈"],{"王宝强"}]
    for i in lst:
    	for j in i:
    		print(j)
    
    
    # range对象
    """
    range(start,end,step)
    start 开始索引
    end   结束索引
    step  步长
    结束索引 这个值取不到,取到end这个值之前的那个数据
    """
    
    # range(一个值的情况) 0~9
    for i in range(10): 
    	print(i)
    	
    # range(二个值得情况) 2~7
    for i in range(2,8):
    	print(i)
    	
    # range(三个值得情况) 1 3 5 7 9 升序
    for i in range(1,10,2):
    	print(i)
    	
    # range(三个值得情况) 9 7 5 3 1 降序
    for i in range(9,0,-2):
    	print(i)
    
  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/reachos/p/11996279.html
Copyright © 2011-2022 走看看