day06

昨日内容回顾

  • 成员运算

    in
         在
    not in
         不在
        
    
  • 身份运算

    ==
        值
    is
        地址
    """
    值相等,内存地址不一定相等
    内存地址相等,值一定相等
    """
    
  • 流程控制

    顺序结构: 从上到下,从左到右依次进行
    分支结构:if判断
    循环结构:while循环、for循环
    
    """
    代码的缩进
        在python通过缩进来表示代码的从属关系
        缩进一般采用四个空格
        并不是所有的代码都可以拥有子代码
        同属一个关键字的代码一定要保持相同的缩进量
    ps:遇到冒号 下一行代码必须缩进
    """
    
    if判断
        """
        if 条件1:
             代码1
             代码2
             ...
        elif 条件2:
              代码1
              代码2
              ... 
         else:
              代码1
              代码2
              ...
        """
     1.组合使用之后就只能走一个关键字的子代码(你走我不走,我走你们都别走)
    2.条件可以是逻辑运算符连接的多个条件
    
    ps:while嵌套
        while+break
            结束本层循环
        while+continue
            结束本次循环
        while+else
            在while没有被break主动打断的情况下正常运行结束
            则会走else
            
    for循环
        """
        for 变量名 in 可迭代对象: 字符串 列表 字典 元组...
            代码1
            代码2
            ...
        """
    补充小知识:可迭代对象
        我们已经知道可以对list、tuple、dict、set、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。
    把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。
        
        在Python中,迭代可通过for ... in来完成,例如列表的迭代:
        for num in [11, 22 , 33]:
    ...     print(num)
    ...
    11
    22
    33
    
    1.range()
        range(10)     只写一个数字则 从0开始
        range(1,10)   写两个则顾头不顾尾
        range(1,10,2) 第三个参数表示间隔几位
         https://movie.douban.com/top250?start=0&filter=
             https://movie.douban.com/top250?start=25&filter=
             https://movie.douban.com/top250?start=50&filter=
             https://movie.douban.com/top250?start=75&filter=
                for i in range(0,255,25):
                    print('https://movie.douban.com/top250?start=%s&filter='%i)
          	# 注意python2与python3的区别
            	range()
                xrange()
                
     ps:for嵌套           
         for+break
        	结束本层循环
         for+continue
        	结束本次循环
         for+else
        	在for没有被主动打断的情况下正常运行结束
            则会走else
        
    

今日内容概要

  • 作业讲解
  • 数据类型
整型与浮点型
字符串
列表
  • 可变类型与不可变类型

    今日内容讲解

    作业讲解

    """
    编写程序的思路:
        先编写程序的主体功能
        然后在思考完善
    """
    
    #猜年龄
    age = 18
    count = 0  #定义一个记录用户次数的变量
    while True:
        if count == 3:  #先判断用户当前是第几次尝试,如果已经尝试三次,则提示用户
            print('你已经尝试三次了')
            choice = input('您已经尝试三次机会了,是否还要继续(y/n)>>>:')
            if choice == 'y':  #判断用户是否还要继续
                count = 0
            else:
                print('欢迎下次再来玩儿哟~')
                break
        guess_age = input('请输入您的年龄>>>:')
        guess_age = int(guess_age)  #将字符串的数字转为整型的数字
        if guess_age > age:
            print('猜大了')
            count += 1  #加一次
        elif guess_age < age:
            print('猜小了')
            count += 1  #加一次
        else:
            print('对了喔,真棒!')
    

    整型与浮点型

    # 整型基本使用
    # 1、用途
        # 年龄 生日 整数类型
    # 2、定义方式
    age = 18  # age = int(18)
    # 3、类型转换
    # int()  将括号内的数据转成整型
    # print(int(123))
    # print(int('123'))
    # print(int('[1,2,3,4]'))
    # print(int('hello world'))
    # print(int('11.11'))  # 待转换的数据内部只能是纯数字
    # 4、进制转换
    # print(bin(100))  # 将十进制的100转换成二进制对应的数    0b1100100
    # print(oct(100))  # 将十进制的100转换成八进制对应的数    0o144
    # print(hex(100))  # 将十进制的100转换成十六进制对应的数  0x64
    """
    0b开头表示二进制数
    0o开头表示八进制数
    0x开头表示十六进制数
    """
    # print(int('0b1100100',2))  # 100
    # print(int('0o144',8))  # 100
    # print(int('0x64',16))  # 100
    
    
    # 浮点型
    # 身高 体重 薪资...
    height = 183.1  # height = float(183.1)
    print(float(183.1))
    print(float('183.1'))
    # print(float('hello world'))
    print(float(183))  # 183.0
    print(int(11.11))  # 11
    print(int('11.11'))
    

    字符串类型

    # 作用:名字,性别,国籍,地址等描述信息
    
    # 定义:在单引号\双引号\三引号内,由一串字符组成
    name = 'hello world!'
    
    # 优先掌握的操作:
    # 1、按索引取值(正向取+反向取) :只能取
    '''索引是从0开始的'''
    # print(name[0])
    # print(name[-1])  # -1表示最有一个元素
    # print(name[8])
    # print(name[-4])
    # 正数表示从左往右  负数从右往左
    # 2、切片(顾头不顾尾,步长)
    '''截取某一段内容'''
    # print(name[1:4])  # 1 2 3  顾头不顾尾
    # print(name[-1:-5:-1])  # 默认的切片方向都是从左往右   -1修改成从右往左  !dlr
    # print(name[1:4:2])  # 第三个参数表示步长  el
    
    # 3、长度len
    '''统计字符串里面的字符个数'''
    # print(len(name))  # 12   空格也算字符
    
    # 4、成员运算in和not in
    # print('hello' in name)
    # print('jason' not in name)
    
    # 5、移除指定的首尾字符strip(******)
    # username = input('username>>>:')  # 'jason '
    # # 将首尾空格移除
    # username = username.strip()
    
    # 两步合并成一步
    # username = input('username>>>:').strip()
    # if username == 'jason':
    #     print('登录成功')
    # else:
    #     print('登录失败')
    # username1 = '$$j$s$o$n$$'
    # username2 = '  jason  '
    # print(username1.strip('$'))  # 移除指定首、尾的所有字符
    # print(username2.strip())  # 默认移除首、尾的所有空格
    # n1 = '$$jason$$'
    # # 移除首指定的字符
    # print(n1.lstrip('$'))  # jason$$            left
    # # 移除尾指定的字符
    # print(n1.rstrip('$'))  # $$jason            right
    # 6、切分split(******)
    '''按照指定g字符串'''
    res = 'jason|123|read'
    # print(res.split('|'))  # ['jason', '123', 'read']
    # # 1.指定切割的字符不保留
    # # 2.切割之后的结构是一个列表(重要)
    res.split('|', maxsplit=1) # ['jason', '123|read']  从左往右切割指定的次数
    print(res)
    # print(res.rsplit('|',maxsplit=1))  # ['jason|123', 'read']  从右往左切割指定的次数
    # 7、循环
    # for i in name:
    #     print(i)  # 依次获取字符串中单个单个的字符
    
    
    # name1 = 'jason'  # str('jason')
    # print(type(str(18)))
    # print(type(str(11.11)))
    # print(type(str('hello')))
    # print(type(str([1,2,3,4])))
    # print(type(str({'name':'jason'})))
    # print(type(str(True)))
    
    # res = 'My NAmE Is JASon 666'
    # 将所有的英文字母转成大写
    # print(res.upper())  # MY NAME IS JASON 666
    # 将所有的英文字母转成小写
    # print(res.lower())  # my name is jason 666
    """图片验证码校验 忽略大小写"""
    # code = 'NaRTs6'
    # my_code = input('code>>>:')
    # if code.upper() == my_code.upper():
    #     print('验证码正确')
    # print(res.isupper())  # False  字符串内部所有的英文字母是否是全大写
    # print(res.islower())  # False  字符串内部所有的英文字母是否是全小写
    
    
    # res = 'jason egon kevin tony'
    # 判断字符串是否以jason开头
    # print(res.startswith('jason'))  # True
    # 判断字符串是否以tony结尾
    # print(res.endswith('tony'))  # True
    
    
    # 字符串格式化输出
    # %s %d
    # format
    # 第一种  与%s一致        按照个数位置 一一传值
    # res = 'my name is {} my age is {}'
    # print(res.format('jason',18))
    # 第二种  按照索引取值     可以反复使用
    # res = 'my name is {0} my age is {1} {0} {0} {0}'
    # print(res.format('jason',18))
    # 第三种  指名道姓取值     可以反复使用
    # res = 'my name is {name} my age is {age} {name} {name} {name}'
    # print(res.format(name='jason',age=18))
    
    
    
    # res = 'jason a a a a  sdf se sdf we ras dsa dw e asdsa dwqd sadsa dsadas'
    # # 统计字符串中 指定字符出现的个数
    # print(res.count('a'))  # 13
    # print(res.count('a', 1, 10))  # 3  指定范围统计
    
    
    # res = 'my name is jason HAJHSSAJJ SAJS  '
    # print(res.title())  # 将所有英文单词首字母大写
    # print(res.capitalize())  # 首字母大写 后面统一变小写
    
    
    # res = 'sdewqe圣诞节卡萨'
    # print(res.isalpha())  # 判断非数字 特殊符号
    
    # 判断是否是纯数字
    # guess_age = input('请输入您的年龄>>>:')
    # # 判断用户输入的是否是纯数字
    # if guess_age.isdigit():
    #     # 将字符串的数字转为整型的数字
    #     guess_age = int(guess_age)  # 暂且忽略
    # else:
    #     print('请输入纯数字')
    
    
    
    # 替换
    # res = 'my name is egon egon egon'
    # 将字符串中所有的egon替换成SB
    # print(res.replace('egon','SB'))  # 全局替换
    # print(res.replace('egon','SB',1))  # 局部替换
    
    
    
    # 将列表多个元素拼接成字符串
    # res = ['jason','egon','kevin','tony']
    # res1 = ['jason','egon','kevin','tony',123]
    # # print('|'.join(res))  # jason|egon|kevin|tony
    # print('|'.join(res1))  #  只能是字符串类型拼接
    

    列表内置方法

    # 中括号括起来 内存可以存放多个元素
    # 元素与元素之间逗号隔开 元素可以是任意数据类型
    
    name_list = ['jason', 'egon', 'tony']  # name_list = list(['jason', 'egon', 'tony'])
    # print(type(list(18)))  # 不能
    # print(type(list(11.11)))  # 不能
    # print(type(list('hello')),list('hello'))  # 可以    ['h', 'e', 'l', 'l', 'o']
    # print(type(list([1,2,3,4])))
    # print(type(list({'name':'jason'})),list({'name':'jason'}))  # 可以  ['name']
    # print(type(list(True)))  # 不能
    '''能够支持for循环的数据 都能够被list转换成列表'''
    
    # 1.索引取值
    # print(name_list[0])
    # print(name_list[-1])
    # 2.切片操作
    # print(name_list[0:2])
    # print(name_list[0:2:2])
    # print(name_list[-1:-3:-1])
    # 3.统计列表中元素的个数
    # print(len(name_list))  # 3
    
    
    列表元素的CURD(增删改查):
        增:
          append:默认添加到列表的最后一个位置
          inset:可以通过下标添加到列表的任意位置
        删:
          remove:根据想删除的具体内容来删除元素
          pop:根据下表元素,删除的元素还可以继续使用
          del:根据元素内容删除元素(可以删除任意对象,比如直接删除列表)
         改:
           a[1]='例子'  : 直接通过下标对列表进行重新赋值达到修改元素的目的
    
    
           查: 切片 []
    print(a[1:])#取到最后
    print(a[1:-1])#取到倒数第二值
    print(a[1:-1:1])#从左到右一个一个去取
    print(a[1::2])#从左到右隔一个去取
    print(a[3::-1])从右到左(-1控制方向) 
    
    # name_list[1] = 'egon快回来!'
    # print(name_list)
    # 末尾追加单个元素
    # name_list.append('kevin')
    # print(name_list)  # ['jason', 'egon', 'tony', 'kevin']
    # name_list.append([11,22,33,44])  # ['jason', 'egon', 'tony', [11, 22, 33, 44]]
    # print(name_list)
    # 插入元素
    # name_list.insert(0,'jack')
    # print(name_list)  # ['jack', 'jason', 'egon', 'tony']
    # 扩展列表
    # l1 = [11,22,33,44,55,66,77]
    # # for i in l1:
    # # name_list.append(i)
    # # print(name_list)
    # name_list.extend(l1)  # extend等价于for+append
    # print(name_list)  # ['jason', 'egon', 'tony', 11, 22, 33, 44, 55, 66, 77]
    
    # 通用的删除操作
    # del name_list[1]
    # print(name_list)  # ['jason', 'tony']
    
    # res1 = name_list.remove('tony')  # 指名道姓的删除
    # print(name_list)  # ['jason', 'egon']
    # print(res1)  # None
    
    # res = name_list.pop()  # 默认尾部弹出元素
    # print(name_list)  # ['jason', 'egon']
    # print(res)
    
    # res = name_list.pop(1)  # 默认指定索引位置的元素
    # print(name_list)  # ['jason', 'tony']
    # print(res)  # egon
    
    
    # l1 = [11,22,33,3,3,3,2,3,23,4,34,3,4,3,4]
    # print(l1.count(3))  # 6  统计列表中某个元素出现的次数
    
    # name_list.clear()  # 清空列表
    # print(name_list)  # []
    
    
    l2 = [11,88,22,44,33,77,66,55]
    # # l2.sort()  # 排序  默认是升序
    # # print(l2)  # [11, 22, 33, 44, 55, 66, 77, 88]
    # l2.sort(reverse=True)  # reverse=True 降序
    # print(l2)  # [88, 77, 66, 55, 44, 33, 22, 11]
    
    # l2.reverse()  # 倒序
    # print(l2)
    
    

    可变不可变

    """
    可变类型
        值改变 内存地址不变
    不可变类型
        值改变 内存地址一定变
    """
    # 不可变类型
    # a = 1
    # print(id(a))  # 140736875403024
    # a = 2
    # print(id(a))  # 140736875403024
    
    
    # 可变类型
    l1 = [11,22]
    print(id(l1))  # 
    l1.append(666)
    print(id(l1))  # 2133952624128
    
    
上一篇:都有哪些数据类型能转换成列表,以及列表的:索引取值,切片,统计元素个数,增删改查,插入元素,扩展,删除,排序


下一篇:数据类型的内置方法,可变类型与不可变类型