• 老男孩Python28期班学习笔记day2


     01今日大纲

      一. 格式化输出:
        %s 占位字符串
        %d 占位数字

        %.2f 占位小数
        "xxx%sx %sxx" % (变量, 变量)

    二. 运算符:
        a+=b  a = a + b

        and 并且. 左右两端同时为真. 结果才能是真
        or 或者. 左右两端有一个是真. 结果就是真
        not  非真既假, 非假既真

        顺序: () => not => and => or

        a or b:
            如果a是0, 结果是b, 否则结果是a

        a and b : 和or相反

    三. 编码
        ascii : 8bit 1byte, 英文字母+ 数字 + 特殊符号
        gbk: 16bit 2byte, 主要是中文
        unicode: 32bit 4byte
        utf-8:
            英文:8bit 1byte
            欧洲:16bit 2byte
            中文:24bit 3byte

        encode()  编码成bytes字节
        decode()  解码


    四. 基本数据类型int和bool
        int bit_length()
        bool:
            数据类型的转换
                True: 1
                False: 0
                0: False
                非0: True

            结论: 如果想把x转化成y. y(x)
            结论: 所有的空都认为是False

    五. 基本数据类型str
        索引和切片: 索引的下标从0开始
        切片: [p:q:r] 从p到q每隔r出来1个
            r如果是负数, 从右往左

        常用的操作:
            1. upper() 转化成大写.
            2. split() 字符串切割. 切割的结果是列表
            3. replace() 字符串替换
            4. stript() 去掉左右两端的空白(空格, , )
            5. isdigit() 判断是否是数字组成
            6. startswith()  是否以xxx开头
            7. find() 查找. 如果找不到返回-1

        内置函数:
            len()求字符串长度.

        for循环
            for 变量 in 可迭代对象:
                循环体

        in 和 not in

    六 列表和元组
        [元素, 元素]
        列表有索引和切片
        增删改查:
            增加: append() insert()
            删除: remove(元素) pop(索引)
            修改: lst[index] = 新元素
            查询: lst[index]
                for item in lst:
                    循环体

        深浅拷贝:
            1. 赋值. 没有创建新列表
            2. 浅拷贝. 只拷贝表面(第一层)
            3. 深拷贝. 全部都拷贝一份

        元组: 不可变, 主要用来存储数据

        range(),可以让for循环数数(重点中的重点)


    七. 字典
        由{}表示. 以k:v形式保存数据
        k必须可哈希. 不可变

        增删改查:
            1. 新增: dic['新key'] = 新value, setdefault(key, value)
            2. 删除: pop(), del, cleart()
            3. 修改: dic[key] = value
            4. 查询: get(), dic[key], keys(), values(), items()

            循环(必须要掌握):
                1. for k in dic:
                        k
                        dic[k]

                2. for k, v in dic.items():
                        k
                        v
    八: set集合
        特点: 无序, 不重复, 元素必须可哈希
        add() 添加

    九: is和==
        is判断内存地址
        ==判断数据

    十: 列表和字典的循环
        在循环列表和字典的时候. 不能删除原来列表和字典中的内容
        把要删除的内容记录在新列表中. 循环这个新列表. 删除老列表

    下周要预习:
        1. 文件操作
        2. 函数

    02格式化输出

        %s 占位字符串
        %d 占位数字

         %f 占位小数
        "xxx%sx %sxx" % (变量, 变量)

    '''
    name = input("请输入第一个人的名字:")
    address = input("请输入一个地点:")
    name2 = input("请输入第二个人的名字:")
    
    # 我想打印 xxxx昨天去xxxx被xxxx撞见了
    # 如果python的版本低于3.6 , 你只能用%的形式进行格式化输出  %s %d
    # 把 % 后面的内容按照位置往前面的%s位置放数据
    # %s 占位字符串. 实际上可以占位任何东西(用的最多的)
    # %d 占位整数. 只能占位数字
    print("%s昨天去%s被%s撞见了" % (name, address, name2))
    
    '''
    # print("alex兜里有%d元" % "100") # %d一般用的不多. 用的多的是%s
    View Code
    info = '''
    ===============Alex Li==================
    ==Name: Alex Li=========================
    ==Job:  总经理==========================
    ==Address: 北京市昌平区美丽富饶的沙河====
    ==Phone: 10086==========================
    ========================================
    '''
    print(info)
    # 如果你的python是3.6以上, 此时可以使用模板字符串
    # f"{变量}"
    
    name = "wusir"
    hobby = "打篮球"
    
    print("%s喜欢%s" % (name, hobby))
    print(f"{name}喜欢{hobby}") # 模板字符串

    003逻辑运算

    # 一.算数运算
    # + - * / % // **
    # 二.比较运算
    # > < >= <= == !=
    # 三.赋值运算
    # = 把等号右边的值赋值给左边的变量
    # a += b   = > a = a + b
    # a -= b    = > a = a - b
    # *=
    # /=
    # a %= b    = > a = a % b
    # 四.逻辑运算
    # 1, and
    # 并且, 左右两端必须同时为真, 最终的结果才能是真, 有一个是假, 结果就是假
    # 2, or
    # 或者, 左右两端有一个是真.结果就是真.全都是假, 结果才能是假
    # 3, not
    # 非.不.非真既假, 非假既真
    # 
    # 如果出现混合逻辑运算.顺序: () = > not = > and = > or
    # 
    # a or b
    # 如果a是0
    # 结果是b
    # 如果a是非零, 结果就是a
    # 
    # a and b
    # 和or相反
    a = 10
    b = 4
    a %= b # a = 10 % 4
    print(a)
    #用while循环计数 1-100
    i = 1
    while i <= 100:
        print(i)
        # i = i + 1
        i += 1

    true类型

    print(1 > 5 or 5 < 6 or 7 > 3)
    print(not False)
    
    print(1 > 3 or 5 < 7 and 6 > 8)
    
    print(not 1 > 5 and 4 < 6 or 7 > 8 and 1 < 9 or 5 > 6)
    
    # 0就是假
    # 非0就是真
    # a or b if a == False then b else a
    print(1 or 2) # 1
    print(0 or 3) # 3
    print(1 or 5) # 1
    print(0 or 5) # 5
    
    print(1 and 3) # 3
    print(0 and 5) # 0
    print(5 and 0) # 0
    print(3 and 5) # 5
    
    print(1 and 2 or 3) # 2
    
    print(1 and 5 or 3 and 4 or 7 or 8 and 6 or 2)  # 5
    
    print(1 and 5 < 3 or 6) # 6
    
    print(1 or 0 and 5 < 6 and 7 > 8 or 3)

     字符串的索引和切片
     索引就是第几个字符, 索引从0开始

    # 切片
    s = "alex昨天看冯提莫直播. 刷了1w个鱼丸"
    s1 = s[4:8] # 默认从左到右切, 顾头不顾尾[start, end)
    print(s1)
    
    s4 = s[6:] # 从6开始切, 切割末尾
    print(s4)
    
    s5 = s[:6] # 从头开始切, 切到6为止
    print(s5)
    
    s6 = s[:] # 从头到尾
    print(s6)
    
    s1 = s[3:8:2]   #从3到8 每2个出来1个  i喜和
    print(s1)
    
    s2 = s[::2]
    print(s2)
    
    # 如果步长为负数, 从右到左
    s3 = s[::-1]
    print(s3)
    
    s4 = s[-1:-6:-2]
    print(s4)
    
    s5 = s[-3::-3]
    print(s5)

    带步长的切片

    #判断是不是回文数
    s = "上海自来水来自海上"
    
    s1=s[:]
    s2=s[::-1]
    
    if(s1==s2):
        print("yes")
    else:
        print("no")

    004编码

    # 美国人发明了关于美国文字在计算机中的显示效果 => ascii 里面编码的内容都是按照美国人的文字进行编码. ascii => 我们能看到的就是那一堆英文字母 + 数字 + 一些你键盘上能看到得所有特殊符号
    
    # 编码就是用特定的排列组合来表示我们的文字信息
    # a  =>  01
    # 在ascii中使用8位01组合来表示一个ascii中的字符
    # ascii在最开始只有7位=> 后来发现,7位很难处理. 为了扩展又添加了一位 => 8bit  => 1byte
    # ascii中只有7位是有效的. 最前面的哪一位是空着的. 是0
    
    # ascii中没有中文编码  提出一个标准 => ANSI => 在ascii基础上扩展8bit  => 16bit=> 给各个国家进行编码 => GB2312 => GBK(国标码扩展码)=>gbk中包含了我们常用的中文, 日文, 韩文, 繁体字
    
    # 国际化的操作依然不能实现 => UNICODE => 万国码 => 扩容=>  us4 => 32bit  => 把所有国家的文字进行同一
    
    # 早期的unicode根本没有办法使用: 1.存储, 2.网络传输
    # a =>8  => unicode => 32
    # 1MB => 4MB
    
    # 随着机能的提高. 还有utf-8的产生. unicode可以使用了
    
    # 0111 1111
    # 把unicode重新进行定义 -> 可变长度的unicode => UTF-8, UTF-16
    # utf-8: 最小的字节单位是8bit
    # utf-16: 最小字节单位: 16bit
    
    # 用的最多的编码就是utf-8
    # 1. 英文: 8bit  -> 1byte
    # 2. 欧洲文字: 16bit  -> 2byte
    # 3. 中文: 24bit -> 3个字节  中文有9万多个
    
    
    # python使用的是???
    # python2.x使用的是ascii
    # python3.x内存中使用的unicode, 文件存储使用:utf-8
    s = "古力娜扎"  # 字符串直接就是unicode
    print(s)
    
    # 想要存储. 必须进行转换 => utf-8 或者GBK
    
    # unicode => UTF-8
    
    # b'xe5x8fxa4xe5x8ax9bxe5xa8x9cxe6x89x8e' 字节 => 01  => 用来存储和传输
    # b'xb9xc5xc1xa6xc4xc8xd4xfa' => gbk的编码  一个中文2个字节
    bs = s.encode("gbk")
    print(bs)
    #  解码
    # bs = b'xb9xc5xc1xa6xc4xc8xd4xfa' # GBK
    bs = b'xe5x8fxa4xe5x8ax9bxe5xa8x9cxe6x89x8e' # utf-8
    
    s = bs.decode("utf-8")
    print(s)
    # 用什么编码. 就用什么解码
    
    # 0,1  => 1bit
    # 8bit => 1byte
    # 1024byte => 1kb
    # 1024kb => 1mb
    # 1024mb => 1gb
    # 1024gb => 1tb
    # 1024tb => 1pb
    # ....
    
    
    # 简单的编码总结:
    # 1. ascii  8bit => 1byte  英文 + 数字 + 特殊符号
    # 2. GBK 16bit  => 2byte 中文
    # 3. unicode 32bit => 4byte 万国码
    # 4. utf-8 :
    #   英文: 8bit, 1byte
    #   欧洲: 16bit, 2byte
    #   中文: 24bit, 3byte
    
    # encode(编码)  编码. 得到的是bytes类型
    # decode(编码)  解码. 得到字符串

    005基本数据类型int 和 bool

    # int类型的数据. 基本运算 +-*/ // **
    # bit_length() 二进制长度
    a = 3    # 11
    print(a.bit_length())   # 二进制长度 2
    
    
    # bool类型. 基本数据类型之间的互相转换
    a = True
    print(type(a))      # <class 'bool'>
    
    # bool => int
    b = int(a)    # 把xxx转化成数字
    print(b)     # True => 1
    
    # True => 1
    # False => 0
    
    print(bool(0))    # False
    print(bool(-1))    # True
    
    # 0 => False
    # 非0 => True
    
    while 1:           # while 1(效率高一点点) 和 while True
         print("还我钱!!!!!!")
    
    # 结论2: 你想把x转化成y   需要y(x)
    # 字符串 => 数字
    # int(字符串)
    
    print(bool(""))    # 能够表示False的字符串是空字符串
    # 结论3: 所有表示空的东西都是假
    
    print(bool(None)) # None : 空, 真空.
    # str: 由双引号, 单引号, 三个单引号, 三个双引号括起来的内容
    # 引号引起来的就是字符串.
    mingxing = '周杰伦的老婆是'
    print(mingxing)
    #下面哪行代码和当前这行代码是同一条代码
    mingxing2 = "冯提莫的老公是" 
                "'alex'"
    print(mingxing2)
    mingxing3 = '''卢本伟的老婆
    是Uu'''
    print(mingxing3)
    mingxing4 = """陈一发儿"""
    
    print(mingxing4)
    # 字符串的索引和切片
    # 索引就是第几个字符, 索引从0开始
    #    012
    #   -3-2-1
    s = "jay"
    print(s[1]) # []表示索引
    #
    print(s[2])
    print(s[-1])
    print(s[-3])
    
    # 切片
    s = "alex昨天看冯提莫直播. 刷了1w个鱼丸"
    s1 = s[4:8] # 默认从左到右切, 顾头不顾尾[start, end)
    print(s1)
    #
    s2 = s[8:4]
    print(s2)
    #
    s3 = s[-6:-2]
    print(s3)
    #
    s4 = s[6:] # 从6开始切, 切割末尾
    print(s4)
    #
    s5 = s[:6] # 从头开始切, 切到6为止
    print(s5)
    #
    s6 = s[:] # 从头到尾
    print(s6)
    
    # 带有步长的切片
    s = "wusir喜欢和alex一起去探讨课件"
    #
    s1 = s[3:8:2] # 从3到8 每2个出来1个  i喜和
    print(s1)
    # 
    s2 = s[::2]
    print(s2)
    # 
    # 如果步长为负数, 从右到左
    s3 = s[::-1]
    print(s3)
    #
    s4 = s[-1:-6:-2]
    print(s4)
    #
    s5 = s[-3::-3]
    print(s5)
    
    # 索引和切片:
    # 字符串[数字]  获取到第xx索引位置的字符
    # 字符串[m:n]   从m开始获取到n结束. 永远娶不到n
    # 字符串[m:n:s] 从m到n结束. 每s个取1个
    
    # 字符串相关操作:
    # 1. upper()  忽略大小写
    # 2. split()  字符串的切割, 默认是使用空白切割
    # 3. replace() 字符串替换
    # 4. strip() 去掉左右两端的空白
    # 5. startswith() 判断是否已xxx开头
    # 6. find()  查找. 找不到返回-1
    # 7. isdigit() 判断是否是数字组成
    
    
    
    
    
    # 大小写转来转去
    # 1. 首字母大写
    s = "alex"
    s1 = s.capitalize()  # 首字母大写, 字符串是不可变的数据类型. 每次操作都会返回新字符串
    print(s)
    print(s1)
    
    # 2. upper() 把所有字母转化成大写
    s = "wusir"
    s1 = s.upper()
    print(s1)
    while 1:
        game = input("请输入你喜欢玩儿的游戏(请输入Exit退出程序):")
        if game.upper() == "EXIT": # 忽略大小写
             break
         print("你喜欢的游戏是%s" % game)
    
    # 3. lower() 全部转化成小写. 对一些欧洲文字不敏感
     s = "wusir和ALEX关系不一般"
     print(s.lower())
    
    # 4. title() 标题,  每个单词的首字母大写
    s = "alex wusir ritian taibai nezha 女神"
    print(s.title())
    
    # 切来切去
    # 1. split() 字符串切割
    s = "alex_wusir_taibai"
    ret = s.split("alex_wusir_taibai") # 如果切割的位置在边缘. 一定能获取到空字符串
    print(type(ret)) # <class 'list'> 列表
    print(ret)
    
    # 2. replace()  字符串的替换
    s = "alex dsb, wusir xsb"
    print(s.replace("sb", "烧饼"))
    print(s.replace("sb", ""))
    
    # 3. strip()  去掉空白 => 脱掉空白
     s = "    哈哈哈     哈哈哈
    	" # 	 制表符(缩进)  
     换行
     print(s.strip()) # 去掉左右两端的空白(必须要记住)
    #
    username = input("用户名:").strip()
    password = input("密码:").strip()
    if username == "alex" and password == "123":
         print("登录成功了")
    else:
         print("登录失败")
    
    #张总. 用户名是alex  密码是123
    
    s = "周杰伦         功夫足球   			 少林足球 足球少林"
    print(s.split())
    
    
    # 找来找去
    s = "php是全世界最好的编程语言"
    print(s.startswith("java")) # 判断这句话是否是以xxx开头
    print(s.endswith("php")) #  判断是否以xxx结尾
    
    name = input("请输入你的名字:")
    if name.startswith(""):
        print("你是姓张的")
     else:
         print("你不是姓张的")
    
    s = "java, php, python, c++"
    print(s.count("av")) # 计算xxx字符串中出现的次数
    s = "海王_剑姬_诺手_余小C喜欢用诺手"
    #
    print(s.find("")) # 找的是索引
    print(s.find("")) # 如果不存在. 返回-1
    print(s.index("")) # index: 索引
    print(s.index("")) # index如果找不到. 报错
    
    # 判断组成
    # isdigit() 判断字符串是否由数字组成
    s = "abc胡辣汤壹123@#$%"
    print(s.isdigit())
    print(s.isalpha()) # 判断是否由文字的基本组成.
    print(s.isalnum()) # 是否由数字. 字母组成, 能屏蔽特殊字符
    
    s = "123123壹佰贰拾伍万贰千三百四十六"
    print(s.isnumeric()) # 判断是否是数字, 两, 俩
    
    # 字符串操作完结
    # 1. len() 求字符串长度,  内置函数
    s = "alex 和 wusir一堆好基友"
    print(len(s)) # 求字符串的长度
    # 可以使用len来遍历字符串
    print(s[0])
    print(s[1])
    print(s[2])
    print(s[3])
    
    print(s[108]) # string index out of range  字符串索引超过了边界
    
    
    i = 0
    while i < len(s): # 遍历字符串
        print(s[i])  # alex  # string index out of range
        i += 1 # i = 4
    
    # for循环
    # 语法: for 变量 in 可迭代对象:
    #           循环体
    # 字符串是一个可迭代对象
    
    s = "alex特别喜欢武藤兰"
    for c in s: # 把字符串s中的每一个字符赋值给前面的变量c
        print(c)
    
    for i in 10: # 'int' object is not iterable
         print(i)
    
    # in和not in 成员运算
    s = "alex特别喜欢太白金星"
     if "胡辣汤" in s:
        print("对不起, 你的评论有敏感词")
     else:
         print("OK. 没问题")
    
    # while...else...
    # for...else...
    #
    i = 0
    while i < 100:
         print(i)
         if i == 66:
            break  # break不会执行else, 打断这个循环.没有经过条件判断所以. 不执行else
        i+=1
    else: # 当判断结束的时候. 自动执行else
        print("数完了")
    # for循环和while循环一样也可以使用break和continue, 和else
    # for循环只有当迭代结束的时候才能执行else
  • 相关阅读:
    python实例26[查询修改文件的属性]
    [SCM]源码管理 VisualSVN Server+TortoiseSVN
    持续集成之“依赖管理”
    Spoon:在“云”上运行桌面应用程序
    数字签名的验证
    判断Linux/Unix为32位或64位
    持续集成理论和实践的新进展
    [SCM]源码管理 SVN Server
    [BuildRelease Management]Parabuild
    为VM增加磁盘空间
  • 原文地址:https://www.cnblogs.com/ComputerVip/p/11780894.html
Copyright © 2020-2023  润新知