day003

一、基础数类型总览

  1. 10203 123 3340 int +- * / 等等
  2. '今天吃了没?' str 存储少量的数据,+ *int 、 切片, 其他操作方法
  3. True False bool 判断真假
  4. [12, True, 'alex', [1,2,3 ]] list 存储大量的数据
  5. (12, True, 'alex', [1,2,3 ]) tuple 存储大量的数据,不可改变里面的元素
  6. { 'name': '太白金星' } dict 存储大量的关联型的数据,查询速度非常快
  7. set 交集,并集差集 ...

二、int

​ 十进制二进制转换

  • # 二进制转换成十进制
    # 0001 1010     ------> ?  26
    b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
    print(b)     # 26
    # 十进制转换成二进制
    42  ----->00101010
    
  • bit_lenth 十进制转化成二进制的有效长度

    # bit_lenth 有效的二进制的长度
    i = 4
    print(i.bit_length())  # 3
    i = 5
    print(i.bit_length())  # 3
    i = 42
    print(i.bit_length())  # 4
    

三、bool

  • bool str int 三者之间的转换

    # # bool  <---> int
    # # True    1   False     0
    # # 非零即True    0 是 False
    
    # # str   <--->   int 
    s1 = 10     int(s1)  : 必须是数字组成
    i = 100     str(i)  
    
    # # str  <---> bool 
    # 非空即True
    s1 = ' '   # 空格
    s2 = ''    # 空字符串,区别于空格
    print(bool(s1))   # True
    print(bool(s2))   # False
     
    # # bool ---> str  无意义
    print(str(True))    # True      # True为字符串
    
  • 应用:

    s = input('输入内容')
    if s:
        print('有内容')
    else:
        print('没有输入任何内容')       # 直接回车
    

四、str

  • 索引切片步长:

    • 字符串从左至右是有顺序,即有下标,即索引
    • 对字符串进行索引,切片出来的数据都是''字符串''类型
    • 从左至右有顺序,下标,索引
  • 按照索引取值:
    1. 形式 : Sequence [ left : right : step ]

    1. step缺省时为1, left:right --> 以坐标序排,否则缺省

    2. 判断:

      ①. 若step为正,则表示从索引left开始取,直到索引right为止,但不包括索引right.
      如果left >= right(先转化,转化后,比如,如下-2即为9,是一个位置),结果为空;
      如果left缺省,默认为0;
      如果right缺省,默认为len(Sequence)

      ②. 若step为负,则表示从索引left开始取,直到索引right为止,但不包括索引right.
      如果left <= right,结果为空;
      如果left缺省,默认为len(Sequence)-1;
      如果right缺省,默认为-1(好吧,我承认这个-1是我自己安排的);

  • # 对字符串进行索引
    # 注意:切片出来的数据都是'字符串'类型
    s1 = 'python全栈22期'
    s2 = s1[0]
    s3 = s1[2]
    s4 = s1[-1]
    s5 = s1[10]
    s6 = s1[-6]
    print(s2,type(s2))         # p <class 'str'>
    print(s3)                  # t
    print(s4)                  # 期
    print(s5)                  # 期
    print(s6)                  # n
    
    # 利用Sequence [ left : right : step ], 对字符串进行切片
    # 按照切片取值, 注意:step缺省时默认为1
    # [要:到谁不要谁]
    s111 = 'python全栈22期'
    s00 = s111[0:5]             # 顾头不顾屁股所以只能pytho
    s11 = s111[0:6]             # 顾头不顾屁股,必须5+1 ----> python
    s22 = s111[:6]              #  [0:6]   ---->   [:6]    若从开头取,则可省略0
    s33 = s111[6:-2]
    s99 = s111[6:]              # 6到尾
    s77 = s111[6:0]             # 顺序不对
    s55 = s111[-2:5]            # 顺序不对
    s66 = s111[-2:0]            # 顺序不对
    s88 = s111[-2:]             # -2到尾
    print(s00)                  # pytho
    print(s11)                  # python
    print(s22)                  # python
    print(s33)                  # 全栈2
    print(s99)                  # 全栈22期
    print(s77)                  #
    print(s55)                  #
    print(s66)                  #
    print(s88)                  # 2期
    
    
    # 切片就是通过索引(索引:索引:步长)截取字符串的一段
    # 切片步长 {  先left与right划出范围(且要清楚索引不包括right) ,  然后以-1为基准跳步长    }
    # step缺省时默认为1
    s1 = 'python全栈22期'
    print(s1[:5:2])          # pto
    print(s1[2:7:5])         # t         (先选上left,step为5----->中间夹4个走,跳出区域这无)
    print(s1[2:7:4])         # t全       (先选上left,step为4----->中间夹3个走,跳出区域这无)
    print(s1[2:7:3])         # tn        (先选上left,step为3----->中间夹2个走,跳出区域这无)
    print(s1[2:7:2])         # to全       (先选上left,step为2----->中间夹1个走)
    print(s1[2:7:1])         # thon全
    # print(s1[2:7:0])       # 报错,step不可为0
    # step为-1时,但是'left -----> right方向应为为逆向读取,否则成 空
    
    print(s1[:5:-2])          # 期2全     (这时,看作0---->-6)
    print(s1[:-6:-2])         # 期2全     (为什么这样可改,下面不行呢?)
    print(s1[2:7:-5])         #
    print(s1[2:7:-4])         #
    print(s1[2:7:-3])         #
    print(s1[2:7:-2])         #
    print(s1[2:7:-1])         #
    
    print(s1[-1:-5])          #
    print(s1[6:1])            #
    print(s1[-1:-5:-1])       # 期22栈
    print(s1[-1:-6:-1])       # 期22栈全
    print(s1[-1:-6:-2])       # 期2全
    print(s1[-1::-1])         # 期22栈全nohtyp
    
    # 注意: right为空时,此时的'尾'应该为最左边  (针对step为负)3
    # 区别于right为-1
    s2 = '社会符合本附件'
    print( s2 [-5 : : -1] )     # 符会社
    print( s2 [-5 : -1 : -1] )  #
    
    
    # 思考题:倒序全部取出来?
    s3 = '社会符合本附件'
    print( s3 [ : : 1] )     #  社会符合本附件
    print( s3 [ :  : -1] )   #  件附本合符会社
    
  • 字符串的常用操作方法

    字符串除了可以用切片(步长)之外,还有一些其他什么操作方法呢?

    • Case1: count

      • # str.count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
        # str.count(sub, start= 0,end=len(string))
        # sub -- 搜索的子字符串
        # start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
        # end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
        a1 = "d0akaf40ajd04k0a0A0fas0a0A0f5a4"
        ret3 = a1.count("a",0,4)       # 可切片
        print('ret3')                  # ret3 , 易错!
        print(ret3)                    # 1  ,   先顾头不顾腚
        print(a1.count('a',0,4))       # 1  ,   先顾头不顾腚
        
        mmm='wwow1wowhioswvhdwbob.com'
        print (mmm.count('o'))               #  5   # 若后面没有,默认全部索引
        print (mmm.count('w',0, 5))          #  3   # 综述若后面有,先顾头不顾腚,再统计范围里,字符串里此字符出现次数
        print (mmm.count('w1wwhs',0, 10))    #  0
        print (mmm.count('wowhios',1, 13))   #  1
        
    • Case2: upper 和 lower

      • # str.upper()     str.lower()
        # str.upper() 全部大写     ,    str.lower() 全部小写
        # 注意:字符串str并没有发生改变, str.upper()函数并不对原有的字符串进行改变!!!
        s = 'taiBAifdsa'
        s1 = s.upper()
        s2 = s.lower()
        print(s1,type(s1))
        print(s2,type(s2))
        
        # 应用:
        username = input('用户名')
        password = input('密码')
        code = 'QweA'
        print(code)
        your_code = input('请输入验证码:不区分大小写')       # 不区分大小写
        if your_code.upper() == code.upper():
            if username == '太白' and password == '123':
                print('登录成功')
            else:
                print('用户名密码错误')
        else:
            print('验证码错误')
        
    • Case3: startswith 和 endswith

      • # startswith endswith
        # startswith endswith的 用法 ,   注意布尔类型!
        # startswith 判断是否以...开头
        # endswith   判断是否以...结尾
        s = 'taiBAifdsa'
        print(s.startswith('t'))            # True
        print(s.startswith('taiBAi'))       # True
        print(s.startswith('B',3,6))        # True        # 3-->6(顾头不顾腚中),是否是以'B'打头
        
        a = 'taiBAifdsa'
        print(a.endswith('a'))            # True
        print(a.endswith('asd'))          # False     # 注意方向
        print(a.endswith('fdsa'))         # True
        print(a.endswith('i',3,6))        # True      # 顾头不顾腚
        
    • Case4: replace

      • # str.replace(old, new, [max]) 方法把字符串中的 old(旧字符串) 替换成  new(新字符串)
        # 如果指定第三个参数max,则替换不超过 max 次,从左到右依次替换
        # 注意:字符串str并没有发生改变,str.replace()函数并不对原有的字符串进行改变!!!
        msg = 'alex 很nb,alex是老男孩教育的创始人之一,alex长得很帅'
        msg1 = msg.replace('alex','太白')          # [max]不存在,则默认全部替换
        msg2 = msg.replace('alex','太白',2)        # 把alex换成太白,从左到右换两个
        msg3 = msg.replace('alex','太白',6)        # 超出 --->全部替换
        print(msg1)     # 太白 很nb,太白是老男孩教育的创始人之一,太白长得很帅
        print(msg2)     # 太白 很nb,太白是老男孩教育的创始人之一,alex长得很帅
        print(msg3)     # 太白 很nb,太白是老男孩教育的创始人之一,太白长得很帅
        
    • Case5: strip

      • # strip:  空白:(空格)    、    \t  (TAB键)    、  \n  (换行符)
        s1 = '  太白\t'
        s2 = '  \n太白\t'
        s3 = '\n  太白\t'
        print(s1)        # (  太白   )
        print(s2)        # 换行+(太白   )
        print(s3)        # 换行+(  太白    )
        
        s6 = '  \n太白\t'
        s5 = s6.strip()      # 去除空白
        print(s5)            # 太白
        
        # 可以去除指定的字符
        s8 = 'rre太白qsd'
        s6 = 'rre太r白qsd'
        s1 = s8.strip('qrsed')
        s2 = s6.strip('qrsed')
        print(s1)                # 太白
        print(s2)                # 太r白    #从前往后  从后往前  同时去除,遇去除不了则停
        
    • Case6: split

      • # 指定分隔符
        # str ---> list
        # str.split(str="", num = string.count(str))   即: 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串,后面挨着
        # str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
        # num -- 分割次数。默认为 -1, 即分隔所有。
        
        s6 = '太白 神 吴超'
        l = s6.split( )       # 这个只是写法,多空格无影响, l=m
        m = s6.split()        # 默认按照空格分隔,返回一个'列表'
        e = s6.split(' ')     # 标准写法:引号里放,返回一个'列表'
        print(l)              # ['太白', '神', '吴超']
        print(m)              # ['太白', '神', '吴超']
        print(e)              # ['太白', '神', '吴超']    # 注意c和e,空什么引号里放什么
        
        s99 = '太白:神:吴超'
        # l = s6.split(:)        # 错误语法
        m = s99.split()          # 默认按照空格分隔,返回一个'列表'
        e = s99.split(':')       # 默认按照空格分隔,返回一个'列表'
        print(m)                 # ['太白:神:吴超']               # 注意区别
        print(e)                 # ['太白', '神', '吴超']
        
        s999 = '太白 神 吴超'
        m = s999.split(' ')
        e = s999.split('  ')
        q = s999.split('   ')
        print(m)                # ['太白', '神', '吴超']
        print(e)                # ['太白 神 吴超']    # 注意m和e,空什么引号里放什么才行
        print(q)                # ['太白 神 吴超']    # 注意q和e
        
        s8 = '太白:神:吴超'
        a = s8.split()          # 也可以写成: a = s8.split( )
        b = s8.split(' ')       # 默认按空格分,返回一个'列表'   # b = s8.split('')会报错
        c = s8.split(':')       # 默认按照空格分隔,返回一个'列表'
        d = s8.split(       )   # 默认按照空格分隔,返回一个'列表'
        print(a)       # ['太白:神:吴超']
        print(b)       # ['太白:神:吴超']
        print(c)       # ['太白', '神', '吴超']
        print(d)       # ['太白:神:吴超']           # 注意区别于列表
        
        s9 = "Line1-abcdef \nLine2-abc \nLine4-abcd"
        o = s9.split( )           # 以空格为分隔符,包含 \n
        p = s9.split(' ', 1 )     # 以空格为分隔符,分隔成两个
        q = s9.split(' ', 2 )     # 即如果参数2,则分隔 2+1 个子字符串,后面挨着一起引
        print (o)                # ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
        print (p)                # ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
        print (q)                # ['Line1-abcdef', '\nLine2-abc', '\nLine4-abcd']
        
        s7 = ':w肯定是:不错:wu'         # 3个分隔符,分出来4个
        s6 = ' :w肯定是:不错:wu'        # 3个分隔符,分出来4个
        print(s7.split(':'))         # ['', 'w肯定是', '不错', 'wu']
        print(s6.split(':'))         # [' ', 'w肯定是', '不错', 'wu']
        print(s6.split(":",2))       # [' ', 'w肯定是', '不错:wu']    # 参数2,则分隔 2+1 个子字符串,后面挨着整体
        
    • Case7: join

      • # 前提:列表里面的元素必须都是str类型
        # join 即:将列表转换成字符串,或者说将序列中的元素以指定的字符连接生成一个新的字符串
        # str.join(sequence)      sequence --> 要连接的元素序列
        s1 = 'alex'
        s2 = '+'.join(s1)
        s3 = '+'.join('alex')
        print(s2,type(s2))                     # a+l+e+x <class 'str'>
        
        
        l1 = ['太白', '女神', '吴超']
        s5 = ':'.join(l1)              # 太白:女神:吴超
        print(l1,type(l1))             # ['太白', '女神', '吴超'] <class 'list'>
        print(s3)                      # a+l+e+x
        print(s5,type(s5))             # 太白:女神:吴超 <class 'str'>
        
        s1 = '+'.join('你好啊')                 # 注意如果不是列表的话,every插入
        print(s1,type(s1))                     # 你+好+啊 <class 'str'>
        
        s6 = '-'
        seq = ('a', 'b', 'c')          # 字符串序列
        print(s6.join(seq))            # a-b-c       # 注意引号要弄掉
        print('-'.join(seq))           # a-b-c       # 另一种表示
        
    • Case8: format

      • # format: 格式化输出
        
        # 第一种用法:
        msg = '我叫{}今年{}性别{}'.format('大壮',25,'男')     # 注意字符串
        print(msg)          # 我叫大壮今年25性别男
        
        # 第二种用法:(常用)
        msg1 = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('大壮', 25,'男')          
        print(msg1)    # 我叫大壮今年25性别男我依然叫大壮
        msg2 = '我叫{1}今年{2}性别{3}我依然叫{1}'.format('大壮', 25,'男')          
        # 报错,因为没有3,从0开始记位
        msg3 = '我叫{1}今年{2}性别{0}我依然叫{1}'.format('大壮', 25,'男')          
        print(msg3)  # 我叫25今年男性别大壮我依然叫25    # 注意从0开始记位
        
        # 第三种用法:
        a = 100          # 可以input.....变量......
        msg6 = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='大壮')     
        # 可以不按照顺序
        print(msg6)       # 我叫大壮今年100性别男
        
    • Case9: is 系列

      • # Case9:
        is 系列:   alnum字母或数字   alpha字母   decimal十进制  
        name = 'taibai123'
        name1 = '100①'
        print(name.isalnum())         # 是否字符串由字母或数字组成?      # True
        print(name.isalpha())         # 是否字符串由只由字母组成?        # False
        print(name.isdecimal())       # 是否字符串由十进制组成?          # False
        print(name1.isdecimal())      # 是否字符串由十进制组成?          # False
        
        # 用途:
        s1 = input('请输入您的金额:')
        if s1.isdecimal():
            print(int(s1))
        else:
            print('输入有误')
        

五、成员运算in

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
s1 = '老男孩edu'
print('老' in s1)             # True
print('老男' in s1)           # True
print('老ed' in s1)           # False       # 必须挨着的(整体) ! ! !
print('老ed' not in s1)       # True

六、for

# for 循环  ( 有限循环 )
for 变量 in iterable:
	pass
# s1 = '老男孩教育最好的讲师:太白'   -------->  如何变成如下形式内容呢 ?
老      s1[0]
男      s1[1]
孩      s1[2]
教      s1[3]
育      ....
...
# 0~12位 = 13
# len :获取可迭代对象的元素总个数

# s1 = '老男孩教育最好的讲师:太白'
# print(len(s1))       # 13

# 方法一:
index = 0
while index < 13:
	print(s1[index])
	index += 1

# 方法二:   (引入len)
index = 0
while index < len(s1):
    print(s1[index])
    index += 1
s1 = '老男孩教育最好的讲师:太白'
for i in s1:
    print(i)          # 也可以达到如上效果

# break continue
# for else  与  while else用法一样(break)
s1 = '老男孩教育最好的讲师:太白'
for i in s1:
    print(i)
    if i == '好':
        break          #老--->好,break
# # 运行结果:
# 老
# 男
# 孩
# 教
# 育
# 最
# 好


fruits = ['banana', 'apple',  'mango']
print(len(fruits))      # 3

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print('当前水果 :', fruits[index])
# # 运行结果:
# 当前水果 : banana
# 当前水果 : apple
# 当前水果 : mango

a = ['banana', 'apple',  'mango']
for i in range(3):
   print('当前水果 :', a[i])        # 运行结果如上
# break    continue

s1 = 'fsdafsda'
for i in s1:
    continue
    print(i)      # 循环,但是啥也没有

s2 = 'fsdafsda'
for i in s2:
    continue
print(i)          # a         # 所以,最后in到a,打印a

s3 = 'fsdafsda'
for i in s3:
    print(i)
    continue     #   f /n s /n d /n a /n f /n s /n d /n a
posted @ 2020-10-07 20:16  jawy  阅读(4)  评论(0)    收藏  举报
回顶部
Document