zoukankan      html  css  js  c++  java
  • 03-基本数据类型(int,bool,str)

    本节主要内容

    1.python 基本数据类型回顾

    2.int ----数字类型

    3.bool ---布尔类型

    4.str ---字符串类型

    一.python 基本数据类型

      1.int ==>整数,主要用来进行数学运算

      2.str ==>字符串,可以保存少量数据并进行相应的操作

      3.bool ==>判断真假,True,False

      4.list ==>存储大量数据.用[ ]表示

      5.tuple ==>元组,不可以发生改变,用()表示

      6.dict ==>字典,保存键值对,一样可以保存大量数据

      7.set==>集合,保存大量数据,不可以重复,其实就是不保存value的dict

    二.整数(int)

      在python3中所有的整数都是int类型.但在python2中如果数据量比较大,会使用long类型.在python3中不存在long类型

      整数可以进行的操作:

      bit_length() 计算整数在内存中占用的二进制码的长度

    十进制 二进制 长度
    1 1 1
    2 10 2
    3 11 2
    4 100 3
    5 101 3
    6 110 3
    7

    111

    3
    8

    1000

    4

    三.布尔值(bool)

      取值只有True,False,bool值没有操作

      在转换问题:

        str => int  int(str)

        int => str  str(int)

        int => bool  bool(int)  0是False 非0是True

        bool => int  int(bool)  True是1,False是0

        str => bool  bool(str)  空字符串是False, 不是空是True

        bool => str  str(bool)  把bool值转换成相应的"值"

    四.字符串(str)

      把字符连成串,在python中用' '," ",""" """,''' '''引起来的内容被称为字符串.

      4.1切片和索引

        1.索引.索引就是下标,切记,下标从0开始

    s1 = "python最牛B"
    print(s1[0]) # 获取第0个
    print(s1[1])
    print(s1[2])
    print(s1[3])
    print(s1[4])
    print(s1[5])
    print(s1[6])
    print(s1[7])
    print(s1[8])
    # print(s1[9]) # 没有9, 越界了了. 会报错
    print(s1[-1]) # -1 表示倒数.
    print(s1[-2]) #
    
    p
    y
    t
    h
    o
    n
    最
    牛
    B
    B
    牛
    

        2.切片,我们可以使用下表来街区部分字符串的内容

          语法:str[start:end]

          规则:顾头不顾腚,从start开始截取,街渠道end位置,但不包括end

          #012345 6 7 8 9
    s2 = "python最⽜牛B"
          -8-7-6-5-4-3-2-1
    print(s2[0:3]) # 从0获取到3. 不不包含3. 结果: pyt
    print(s2[6:8]) # 结果 最⽜
    print(s2[6:9]) # 结果最牛牛,     最大是8. 但根据顾头不不顾腚, 想要取到8必须给9
    print(s2[6:10]) # 结果最⽜牛B   如果右边已经过了了最⼤大值. 相当于获取到最后
    print(s2[4:]) # 如果想获取到最后. 那么最后⼀一个值可以不不给.
    print(s2[-1:-5]) # 从-1 获取到 -5 这样是获取不不到任何结果的. 从-1向右数. 你怎么数
    也数不不到-5   显示为空
    print(s2[-5:-1]) # 结果n最⽜牛,  取到数据了了. 但是. 顾头不不顾腚. 怎么取最后⼀一个呢?
    print(s2[-5:]) # 结果n最⽜牛B    什么都不不写就是最后了了
    print(s2[:-1]) #结果n最⽜牛        这个是取到倒数第⼀一个
    print(s2[:]) # 原样输出

     跳着截取

    s2 = "python最⽜牛B"
    # 跳着取, 步⻓长
    print(s2[1:5:2]) # 从第⼀一个开始取, 取到第5个,每2个取1个, 结果: yh, 分析: 1:5=>
    ytho => yh
    print(s2[:5:2]) # 从头开始到第五个. 每两个取⼀一个 结果:pto
    print(s2[4::2]) # 从4开始取到最后. 每两个取⼀一个  结果:O最牛
    print(s2[-5::2]) # 从-5取到最后.每两个取⼀一个      结果:n牛B
    print(s2[-1:-5]) # -1:-5什什么都没有. 因为是从左往右获取的.  空
    print(s2[-1:-5:-1]) # 步⻓长是-1. 这时就从右往左取值了了 结果:B牛牛最
    print(s2[-5::-3]) # 从倒数第5个开始. 到最开始. 每3个取⼀一个步⻓3, 结果 nt

     步长:如果是整数,则从左往右取,如果是负数,则从右往左取,默认是1

    切片语法:

      str[start:end:step]

    start:起始位置

    end:结束位置

    step:步长

    4.2字符串的相关操作方法

    切记,字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的.

      1.大小写转来转去

      

    s1  = "strong In Action, Gentle In meTHod"
    print(s1)               # strong In Action, Gentle In meTHod ,输出并没有变化,因为这里的字符串本身是不会发生改变的,需要我们重新获取
    print(s1.capitalize())  # Strong in action, gentle in method,
    # 大小写的转换
    
    ret2 = s1.lower()
    print(ret2)              # strong in action, gentle in method,全部转换成小写
    
    ret3 = s1.upper()       # STRONG IN ACTION, GENTLE IN METHOD 全部转换成大写
    print(ret3)
    
    
    
    # 应用,校验用户输入的验证码是否合法
    
    verify_code = "abDe"
    user_verify_code = input("请输入验证码:")
    if verify_code.upper() == user_verify_code.upper():
        print("验证成功")
    else:
        print("验证失败")
    
    ret4 = s1.swapcase()
    print(ret4)             # STRONG iN aCTION, gENTLE iN MEthOD  大小写相互转换
    
    #不常用
    ret5 = s1.casefold()
    print(ret5)             # strong in action, gentle in method 转换成小写,和lower的区别:lower()对某些字符支持不够好,casefold()对所有字母都有效,比如东欧的一些字母
    
    s2 = "БBß" # 俄美德
    print(s2)               #БBß
    print(s2.lower())       #бbß
    print(s2.casefold())    #бbss
    
    # 每个被特殊字符隔开的字母首字母大写
    s3 = "alex eggon,taibai*yinwang_麻花藤"
    ret6 = s3.title()
    print(ret6)             # Alex Eggon,Taibai*Yinwang_麻花藤
    
    # 中文也算是特殊字符
    s4 = "karen的英文名叫karen"
    print(s4.title())       # Karen的英文名叫Karen
    # 居中
    s5 = "周杰伦"
    ret = s5.center(10, "*")  # 拉成长10,把原字符串放中间,其余位置补*
    print(ret)
    
    # 更改tab的长度
    s6 = "tom Jany	赵丽颖"
    print(s6)                   # tom Jany    赵丽颖
    print(s6.expandtabs())      # tom Jany        赵丽颖
    
    # 去空格
    s7 = "    赵丽颖    冯绍峰    官宣  "
    # ret7 = s7.strip()   # 去掉左右两端的空格
    # print(ret7)
    
    ret = s7.lstrip()
    print(ret)           # 赵丽颖    冯绍峰    官宣 去掉左边空格
    ret = s7.rstrip()
    print(ret)          #     赵丽颖    冯绍峰    官宣  去掉右边空格
    
    # 应用,模拟用户登录,忽略用户输入的空格
    username = input("请输入用户名:").strip()
    password = input("请输入密码:").strip()
    if username == "karen" and password == "123":
        print("登陆成功")
    else:
        print("登录失败")
    
    s8 = "abcdefgabc"
    print(s8.strip("abc"))
    
    # 字符串替换
    s9 = "long_time_no_see,how_are_you"
    ret = s9.replace("long","很长")
    print(s9)           # long_time_no_see,how_are_you  切记,字符串时不可变对象,所有操作都是产生新字符串返回
    print(ret)          # 很长_time_no_see,how_are_you
    
    ret = s9.replace("o", "Z", 3)
    print(ret)          # lZng_time_nZ_see,hZw_are_you
    
    # 字符串切割
    lst = s9.split("_")
    print(lst)          # ['long', 'time', 'no', 'see,how', 'are', 'you'] 字符串切割返回是一个列表
    
    s10 = """诗人
    学者
    感叹号
    渣渣
    """
    print(s10.split("
    "))         # ['诗人', '学者', '感叹号', '渣渣', '']
    
    #
    s11 = "嘟嘟泰国嘟嘟新加坡嘟嘟印度尼西亚咖喱干嘛干嘛呀嘟嘟"
    lst = s11.split("嘟嘟")
    print(lst)  # ['', '泰国', '新加坡', '印度尼西亚咖喱干嘛干嘛呀', '']如果切割符在左右两端,name一定会出现空字符串,深坑请留意

    3.格式化输出

    # 格式化输出
    s12 = "我叫%s, 今年年%d岁了了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法
    print(s12)
    s12 = "我叫{}, 今年年{}岁了了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化
    print(s12)
    s12 = "我叫{0}, 今年年{2}岁了了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置
    print(s12)
    s12 = "我叫{name}, 今年年{age}岁了了, 我喜欢{singer}".format(name="周杰伦", singer="周润", age=28) # 指定关键字
    print(s12)

    4.查找

    s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔言."
    ret1 = s13.startswith("sylar") # 判断是否以sylar开头
    print(ret1)
    ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开头
    print(ret2)
    ret3 = s13.endswith("语⾔言") # 是否以'语⾔言'结尾
    print(ret3)
    ret4 = s13.endswith("语⾔言.") # 是否以'语⾔言.'结尾
    print(ret4)
    ret7 = s13.count("a") # 查找"a"出现的次数
    print(ret7)
    ret5 = s13.find("sylar") # 查找'sylar'出现的位置
    print(ret5)
    ret6 = s13.find("tory") # 查找'tory'的位置, 如果没有返回-1
    print(ret6)
    ret7 = s13.find("a", 8, 22) # 切⽚片找
    print(ret7)
    ret8 = s13.index("sylar") # 求索引位置. 注意. 如果找不不到索引. 程序会报错
    print(ret8)
    False
    True
    False
    True
    3
    2
    -1
    21
    2
    Process finished with exit code 0
    # 条件判断
    s14 = "123.16"
    s15 = "abc"
    s16 = "_abc!@"
    # 是否由字⺟母和数字组成,s.isalnum() 所有字符都是数字或者字母
    print(s14.isalnum())
    print(s15.isalnum())
    print(s16.isalnum())
    print("
    ")
    # 是否由字⺟母组成
    print(s14.isalpha())
    print(s15.isalpha())
    print(s16.isalpha())
    print("
    ")
    # 是否由数字组成, 不不包括⼩小数点
    print(s14.isdigit())
    print(s14.isdecimal())
    print(s14.isnumeric()) # 这个⽐比较⽜牛B. 中⽂文都识别.
    print(s15.isdigit())
    print(s16.isdigit())
    print("
    ")
    # 练习. ⽤用算法判断某⼀一个字符串串是否是⼩小数
    s17 = "-123.12"
    s17 = s17.replace("-", "") # 替换掉负号
    if s17.isdigit():
        print("是整数")
    else:
        if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
            print("是⼩小数")
        else:
            print("不不是⼩小数")
    # 练习. ⽤用算法判断某⼀一个字符串串是否是⼩小数
    s17 = "-123.12"
    s17 = s17.replace("-", "") # 替换掉负号
    if s17.isdigit():
    print("是整数")
    else:
    if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
    print("是小数")
    else:
    print("不是⼩小数")

    6.计算字符串的长度

    s18 = "我是你的眼, 我也是a"
    ret = len(s18) # 计算字符串串的⻓长度,len()是一个内置函数,不是方法
    print(ret)        # 11 空字符是也是一个字符串

    注意:len()是python的内置函数,所以访问方式也不一样,就记着len()和print()一样就行了.

    7.迭代

      我们可以使用for循环来遍历(获取)字符串中的每一个字符

      语法:

        for 变量 in 可迭代对象:

          pass

        可迭代对象:可以一个一个往外取值的对象

    s19 = '' 
          '泰国 新加坡 印度尼西亚' 
          'Coco Pineapple Mango(椰子,菠萝,芒果)'
    
    # 用for循环
     for c in s19:
         pass
         print(c)
    
    # 用while循环
    index = 0
    while index <= len(s19)-1:
        print(s19[index])
        index += 1
    
    结果:
    泰
    国
     
    新
    加
    坡
     
    印
    度
    尼
    西
    亚
    C
    o
    c
    o
     
    P
    i
    n
    e
    a
    p
    p
    l
    e
     
    M
    a
    n
    g
    o
    (
    椰
    子
    ,
    菠
    萝
    ,
    芒
    果
    )
    
    Process finished with exit code 0

     in 由两种用法:

      1.在for中,是将在in后面的对象中获取到的每一个元素到赋值给前面的变量.

      2.不在for中,判断xxx是否出现在str中.

    print("泰国" in s19)
    
    python.exe "E:/python_workspace/day003 基础数据类型.int,bool,str/作业03.py"
    True
    
    Process finished with exit code 0

    # 练习, 计算在字符串串"I am sylar, I'm 14 years old, I have 2 dogs!"中的数字有多少个?

    s20 = "I am sylar, I'm 14 years old, I have 2 dogs!"
    count = 0
    for s in s20:
        if s.isdigit():
            count += 1
    print(count)
  • 相关阅读:
    Pagodas
    Bazinga
    取石子问题
    Sudoku Killer(hdu 1426 数独)
    欧拉函数
    CCPC Ancient Go
    ZZNU 1992: 情人节的尴尬
    fzu Problem 2128 最长子串(KMP + strstr 经典好题)
    POJ
    HDU
  • 原文地址:https://www.cnblogs.com/zero-zero-zero/p/9819111.html
Copyright © 2011-2022 走看看