zoukankan      html  css  js  c++  java
  • 记录我的 python 学习历程-Day03 数据类型 str切片 for循环

    一、啥是数据类型

    ​ 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型有多种,如下:

    >>整数型(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set).

    • int 数字:主要用于运算。1,2,3...
    • bool 判断真假:True, False.
    • str 简单少量的储存数据,并进行相应的操作。name = 'Dylan'
    • tuple 只读,不能更改。(1,'Dylan')
    • list 大量有序数据,[1,'ses',True,[1,2,3],{'name':'Dylan'}]
    • dict 大量数据,且是关联性比较强的数据 {'name':'Dylan','age':18,'name_list':['张三','李四']}

    二、基础数据类型

    • int 整数型

      就是我们常见的数据类型,主要用于基本的数学运算,比如+ - * / 等等。

      • 十进制转二进制

        十进制整数转换为二进制整数:采用"除2取余,逆序排列"法。

        具体做法是:

        用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

        0001 1010 ------> 26
        b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
        print(b)  # 26
        
      • 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 布尔值

      布尔值就两种:True,False。就是反应条件的正确与否。

      真 1 True。

      假 0 False。

      这里补充一下int str bool 三者数据类型之间的转换。

      • int 转 bool
      # int -----> bool
      i = 100
      print(bool(i)) # True 非零即 True
      
      i = 0
      print(bool(i)) # False 零即是 False
      
      • bool 转 int
      # bool -----> int
      t = True
      print(int(t)) # 1 True --> 1
      
      f = False
      print(int(f)) # 0 False --> 0
      
      • int 转 str
      i = 99
      print(str(i)) # '99' 除了用引号包起来,和不能进行一些数学运算外,没啥特别的
      
      • str 转 int
      s = '88' # 全部由数字组成的字符串才可以转化为数字
      print(int(s)) # 88
      
      • str 转 bool
      s1 = 'Dylan'
      s2 = '' # 空字符串
      print(bool(s1)) # True 非空即 
      print(bool(s2)) # False
      
      • bool 转 str
      t = True
      print(str(t)) # 'True'
      t = False
      print(str(t)) # '' 反回的是个空字符串
      
    • str 字符串

      Python中凡是用引号引起来的数据可以称为字符串类型,组成字符串的每个元素称之为字符,将这些字符一个一个连接起来,然后在用引号起来就是字符串。

      • 字符串的索引与切片

        • 索引

          索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

          s = 'ABCDEFGHIJ'
               0123456789     #字母下面对应的数字就叫 下标(又叫索引)
          --------------------------------------------
          根据索引(下标),找到字符串中的某一个元素.)
          s = 'ABCDEFGHIJ'
          s1 = s[1]   #根据索引(下标),找到字符串中的某一个元素.
          print(s1) #结果是 B
          
        • 切片

          切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)

          # 正取  切片规则:顾头不顾尾  格式:s1 = s[首:尾:步长]
          s = 'ABCDEFGHIJ'
          s2 = s[0:5]     #取的 ABCDE  顾头不顾尾
          s3 = s[0:5:2]   #取的 ACE   顾头不顾尾  格式:s1 = s[首:尾:步长]
          --------------------------------------------
          # 倒取    切片规则:顾头不顾尾  格式:s1 = s[首:尾:步长]
          s = 'ABCDEFGHIJ'
          s4 = s[3::-1]   #取的 DCBA  Ps.反取 递减正查
          print(s4)
          
          s5 = s[::-1]   #取的 JIHGFEDCBA Ps.反取整个列表(方法一)
          print(s5)
          
          s6 = s[-1::-1]   #取的 JIHGFEDCBA Ps.反取整个列表(方法二)
          print(s6)
          
      • 字符串的常用方法

        • s.upper() 全部变成大写,对数字没有影响

          s = 'an533wangxiaoyao'
          s2 = s.upper() 	# 全部变成大写,对数字没有影响
          print(s2)	# AN533WANGXIAOYAO
          
        • s.lower() 全部变成小写,对数字没有影响

          s = 'ABC12533wangxiaoyao'
          s21 = s.lower() # 全部变成小写,对数字没有影响
          print(s21)	# abc12533wangxiaoyao
          
          • <全部变大写或小写 验证码实例应用>

            s_str = 'weFD'
            print('验证码:',s_str)
            i = 0
            while i < 1:
                 you_input = input('''请输入验证码,不区分大小写:
            >>>''')
                 if s_str.lower() == you_input.lower():
                    print('验证成功')
                     i = 1
                 else:
                     print('输入有误,请重新输入!')
                     agin = input('是否退出[y/n]')
                     if agin != "y":
                         i = 1
            
        • s.startswith() 以什么开头

          s = 'Dylan1egonwu'
          s7 = s.startswith('Dyl')  #判断这个字符串是不是以 Dyl 开头的
          s71 = s.startswith('e',2,5) #切片操作,判断字符串索引中2到5的位置是不是以 e 开头
          print(s7,s71)  #打印的结果反回的是 True 或者 False 可以做 while 或者 if 判断条件
          
        • s.endswith() 以什么结尾

          s = 'Dylan1egonwu'
          s8 = s.endswith('wu')  #判断这个字符串是不是以 wu 结尾的.
          s81 = s.endswith('l',2,5) #切片操作,判断字符串索引中2到5的位置是不是以 l 结尾
          print(s8,s81)  #打印的结果反回的是 True 或者 False 可以做 while 或者 if 判断条件
          
        • s.replace() 替换

          s = '来看待街坊邻居复合大师街坊法好的撒见客户'
          s11 = s.replace('街坊','老王',1) # 这里面这个1 是在当前字符串里替换几次
          print(s11)  # 来看待老王邻居复合大师街坊法好的撒见客户
          
        • s.strip() 去前后字符(s.rstrip() 从右删 / s.lstrip() 从左删 )

          默认去空格,只能去前后,不能去字符串中间的空格或特殊字符

          s = '   alex1egonwusir    '
          s9= s.strip()
          print(s9) # alex1egonwusir
          l = '   @alex1e@$gonwu!sir@!$    '
          s88= l.strip('@$! ')
          print(s88) # alex1e@$gonwu!sir
          

          ->例子

          username = input('名子:').strip() # 假如输入的内容前后有空格
          if username == '春哥':
          username = input('名子:')   #还可以这么写
          if username.strip() == '春哥':  #还可以这么写
             print('恭喜春哥发财!')
          
        • s.split() 字符串拆分成列表 str ---->list

          s = 'Dylan 1eg on wusir'
          l = s.split()   #默认以空格拆分成列表
          print(l) # ['Dylan', '1eg', 'on', 'wusir']
          
          s = 'Dylan; 1eg; on; wusir'
          l = s.split(';')   #也可以用其它字符拆分成列表
          print(l) # ['Dylan', ' 1eg', ' on', ' wusir']
          
        • join 非常好用

          s1 = 'alex'
          s2 = '+'.join(s1)
          print(s2,type(s2)) # a+l+e+x <class 'str'>
          
          l1 = ['太白', '女神', '吴超']
          # 前提:列表里面的元素必须都是str类型
          s3 = ':'.join(l1)
          print(s3) # 太白:女神:吴超
          
        • s.count() 找出这个字符串里有几个相同元素 可以切片找.可以两个字线做为一个整体找.

          s = 'alex1egonwusir'
          s10 = s.count('a') #找出这个字符串里有几个'a' 可以切片找.可以两个字线做为一个整体找.
          print(s10)  # 1
          
        • format 的三种玩法 格式化输出 可替代 %s %d %% 占位符

          • res='{} {} {}'.format('egon',18,'male')

          • res='{1} {0} {1}'.format('egon',18,'male')

          • res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

          # 第一种用法:
          msg = '我叫{}今年{}性别{}'.format('Dylan',18,'男')
          print(msg)
          # 第二种用法:
          msg = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('Dylan', 18,'男')
          print(msg)
          # 第三种用法:
          a = 18
          msg = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='Dylan')
          print(msg)
          
        • is 系列:

          • s.isalnum() 字符串由字母或数字组成

            name = 'taibai123'
            print(name.isalnum()) #字符串由字母或数字组成
            
          • s.isalpha() 字符串只由字母组成

            name = 'taibai123'
            print(name.isalpha()) #字符串只由字母组成
            
          • s.isdecimal() 字符串只由十进制组成

            name = 'taibai123'
            name = '100①'
            print(name.isdecimal()) #字符串只由十进制组成
            
        • for 循环

          s = 'fdsafsggfdhgsczzz'
          for i in s: #循环遍历变量 s,每次遍历一个字符,赋值给 i.
              print(i)    #遍历打印 i
          
        • in 的用法(还有 not in )

          s = 'fdsfjkaf苍井空fdafasfwlla'
          if '苍井空' in s:  # 如果变量 s 中有'苍井空'
              print ('你的评论有敏感词..')    # 将打印'你的评论有敏感词..'
          
    人生苦短,我用 Python
  • 相关阅读:
    k8s使用
    7月3日课堂笔记
    7月6日课堂笔记
    画倒三角形
    6月29日课堂笔记
    understand试用笔记一阅读VS2010项目
    Spring Boot 入门(九)使用RabbitMQ
    Spring Boot 入门(十一)使用Schedule
    Spring Boot 入门(十三)使用Elasticsearch
    学习MySQL
  • 原文地址:https://www.cnblogs.com/guanshou/p/12005979.html
Copyright © 2011-2022 走看看