03数据类型、str型内建方法,for循环

一、数据类型总览

  1. int型:整型
  2. str型:字符型
  3. bool型:True False
  4. list型:列表 [12,True,'hello',[1,2,3]],存储大量数据
  5. tuple型:元组,存储大量数据,不可修改
  6. dict型:字典{'name':'jack'},查询速度很快,存储大量数据

二、int、str、bool型

  1. int主要用于计算

    • 加,减,乘,除

    • 进制转换

      • 二进制转成十进制

        • 0001 1010等于

          7654 3210

          2 ** 0 *0 + 2 ** 1 * 1 + 2 ** 2 * 0 + 2 ** 3 * 1 + 2 ** 4 * 1

      • 十进制转换成二进制

        • 42等于
  2. int和str与bool转换

    • int转换成bool

      • print(bool(10)) ---> True
      • print(bool(0)) ----> False
      • 非零即真
    • str转成bool

      • print(bool(' ')) ----> True
      • print(bool('')) ----> False
      • 非空即真
      • " "空格是特殊字符,不是空字符
    • int转成str

      • print(str(10)) ---> '10'
    • str转成int

      • 字符串转换成整型,必须是纯数字字符串才能转换成整型

      • print(int('10')) ---> 10

        # 字符串作为判断条件
        s = input("请输入:")
        if s:
            print("您输入的是:{}".format(s))
        else:
            print("您没有输入内容!")
        

二、字符串操作

  1. str的下标,索引

    • s1='python全栈XX期'
      • 字符串从左至右有顺序,叫做下标,下标可以进行索引
      • 字符串的值:p y t h o n 全 栈 X X 期
      • 下标的值 :0 1 2 3 4 5 6 7 8 9 10
      • print(s1[3]) ---> 输出s1字符串,下标为3的元素,结果为'h'
      • print(s1[-1]) ---> 输出s1字符串,最后一个元素,结果为'期'
  2. str的切片,切片是顾头不顾尾,左闭右开形

    • s1='python全栈XX期'

      # 取出"python"这个字符串
      print(s1[0:6])
      # 结果为:“python”
      
      #取出"全栈XX期"
      print(s1[6:])
      # 右边不写,代表取到最后一位
      
      • 步长,步长就是隔几个取值,默认是1,连续取值
      s1='python全栈22期'
      print(s1[:6])
      # python
      print(s1[6:])
      # 全栈22期
      print(s1[:5:2])
      # pto
      
      • 倒序取值,必须要加上倒序步长。如果不加不会报错,也不出正确结果
      s1='python全栈22期'
      
      print(s1[-1:-6:-1])
      # 期22栈全
      
      • 字符串逆序
      s1='python全栈22期'
      print(s1[::-1])
      # 期22栈全nohtyp
      print(s1[-1:0:-1])
      
  3. 练习

    • 有字符串s="123a4b5c"

      • 通过对s切片形成新的字符串s1,s1="123"
      • 通过对s切片形成新的字符串s2,s2="a4b"
      • 通过对s切片形成新的字符串s3,s3="1345"
      • 通过对s切片形成新的字符串s4,s4="2ab"
      • 通过对s切片形成新的字符串s5,s5="c"
      • 通过对s切片形成的字符串s6,s6="ba2"
      s="123a4b5c"
      s1 = s[:3]
      s2 = s[3:6]
      s3=s[::2]
      s4=s[1:-2:2]
      s5=s[-1]
      s6=s[-3::-2]
      
  4. 常用内置方法

    • upper:全部变成大写字母

    • lower:全部变成小写字母

      • 有返回值,不会对原字符串操作
      • 遇到数字和汉字,直接跳过
      s='abCdEFg'
      s1=s.upper()
      s2=s.lower()
      print(s1)
      print(s2)
      # ABCDEFG
      # abcdefg
      
      • 应用,验证码不区分大小写

        username=input("请输入用户名:")
        password=input("请输入密码:")
        print("验证码为:QwEa")
        code = "QwEa"
        your_code=input("请输入验证码,不区分大小写:")
        if username == 'admin' and password == '123456':
            #把验证码全部转换成小写的
            if your_code.lower() == code.lower():
                print("验证码输入正确")
            else:
                print("验证码输入错误!")
        else:
            print("用户名或密码错误!")
        
    • startswith:判断是否以“XXX”开始,不常用

    • endswith:判断是否以"XXX"结束,不常用

      • 支持切片,startswith('B',3),表示第三个字符是不是以B开始的
      s="hello,python"
      print(s.startswith('h'))
      # True
      #判断s字符串是否以h开头,如果是,则返回True
      print(s.startswith('e',1))
      # True
      #判断s字符串中索引为1的元素是否是e
      
    • replace:元素替换

      • str.replace(old,new,count)
        • count可以不写,默认是全部
      msg="我喜欢java语言,我要坚持学习java"
      msg1=msg.replace("java","python")
      print(msg)
      print(msg1)
      # 结果如下,默认把msg中所有的java替换成了python
      # 我喜欢java语言,我要坚持学习java
      # 我喜欢python语言,我要坚持学习python
      
    • strip:去掉字符串首尾的字符

      • str.strip(),默认去除\t,\n,空格等
      • str.strip("qwert"),去除字符串首尾中,包含括号中的字符
      msg="\t\n   你好\thello\npython\n\n\n"
      msg1=msg.strip()
      print(msg1)
      # 结果如下,只留下了中间的特殊符号:
      你好	hello
      python
      
      msg="qwer你w好,r中国!ewrq"
      msg1=msg.strip("rweq")
      print(msg1)
      # 结果如下:
      #你w好,r中国!
      
    • split:把字符串分割开,返回值是列表

      • str.split():默认是按照空格分割
      • str.split("😊:指定分隔符为":"
      • str.split(":",2):指定分隔符为":",并且只分割前两个,后面的不管
      msg="python    java c++ php shell"
      msg1=msg.split()
      print(msg1,type(msg1))
      # 结果如下
      ['python', 'java', 'c++', 'php', 'shell'] <class 'list'>
      
      • 如果字符串的开头就是指定的分割符,转换成列表时,列表第一个元素是空的。
      msg=":python:java:c++:php:shell"
      msg1=msg.split(":")
      print(msg1)
      #对于msg2,只分割前两个
      msg2=msg.split(":",2)
      print(msg2)
      ## 结果如下:
      ['', 'python', 'java', 'c++', 'php', 'shell']
      ['', 'python', 'java:c++:php:shell']
      
    • join:以指定字符连接,返回一个新的字符串,返回值是字符串

      • ":".join(str) :把str字符串用“:”连接起来,生成一个新的字符串。
      • str可以是一切可迭代对象。
      s1="-"
      s2="*"
      string="python"
      print(s1.join(string))
      #print("-".join("python"))
      print(s2.join(string))
      #print("*".join("python"))
      # 结果如下:
      p-y-t-h-o-n
      p*y*t*h*o*n
      
    • count:统计某个字符出现的次数。

      • str.count("a"):统计a在str中出现的次数
      msg="asdsafadabadgadsb"
      print(msg.count("a"))
      # 结果为:
      6
      
    • format:格式化输出

      • 第一种用法:大括号占位,后面一一对应。

        msg="我叫{},今年{},性别{}".format('python',25,'男')
        print(msg)
        # 结果如下:
        我叫python,今年25,性别男
        
      • 第二种用法:前面占位符指定对应后面的位置

        msg="我叫{1},我爱{0},同学也爱{0}".format("python","jack")
        print(msg)
        # 结果如下:
        我叫jack,我爱python,同学也爱python
        
      • 第三种用法:指定变量名,后面写上变量的值

        msg="我叫{name},我爱学习{yuyan},同事也爱{yuyan}".format(yuyan="python",name="jack")
        print(msg)
        # 结果如下:
        我叫jack,我爱学习python,同事也爱python
        
    • is系列方法:

      • isalmun():判断字符串是否由数字和字母组成
      • isalpha():判断字符串是否是纯数字
      • isdecimal():判断是否是十进制数字

三、for循环

  1. 语法格式

    格式一:
    for 变量 in iterable:
    	pass
    
    格式二:
    for 变量 in iterable:
    	pass
    else:
    	pass
    
    • 一般用在循环次固定的情况下
    • for...else...和while...else...的用法是一样的,如果for正常结束,就执行else,否则就不执行
    • 也可以配合break和continue使用
posted @ 2021-02-27 16:37  majic_jie  阅读(109)  评论(0)    收藏  举报