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

    基本数据类型(int, bool, str)

    python基本数据类型

    • int ==> 整数. 主要⽤来进⾏数学运算
    • str ==> 字符串, 可以保存少量数据并进⾏相应的操作
    • bool==>判断真假, True, False
    • list ==> 列表 存储⼤量数据.⽤[ ]表⽰
    • tuple=> 元组, 不可以发⽣改变 ⽤( )表示 不可变
    • dict==> 字典, 以key: value的形式存储数据 key(标签, 便于查找) value(所保存的值)查找速度快
    • set==> 集合 (类似数学里的集合) 保存⼤量数据. 不可以重复. 其实就是不保存value的dict

    整数 (int)

    整数

    • 常见操作就那么几个 + - * / // % **
    a = 4
    print(a.bit_length())   #运行结果是 3  即  三位  数字4在二进制里显示是 100
    

    布尔值 (bool)

    • 转换问题 :
    • str = str(int) 整数转换为字符串
    • int = int(str) 字符串转换为整数
    • bool = bool (int) 整数转换为布尔值 打印结果: 0 是False 非0是True
    • int = int(bool) 布尔值转换为整数 打印结果: True是1 False是0
    • bool = bool(str) 字符串转换为布尔值 空字符串是False, 不空是True
    • str = str(bool) 布尔值转换为字符串 把bool值转换成相应的"值"
    • 可以当做False来用的数据: 0 "" [] {} () None [] 是 (列表)

    字符串 (str)

    • 字符: 单一文字符号
    • 字符串: 把字符连成串,有序的字符序列
    • 字符串由 ' " ''' """括起来的内容

    索引

    • 索引 :一排数字,字符串. 反应第某个位置的字符 索引的下标从0开始. 使用 [] 来获取数据, 索引从0位开始计数
    • 缺点: 有bug, 如果此位没有字符就会报错
           01234 5 6 7 
    s12 = "Alex是个教师"
    print(s12[0])  # 打印出来时 "A"
    print(s12[8])  # 会报错 ,没有第八位
    print(s12[-1]) # 打印出是"师" (表示倒数第一位字符)
    

    延伸题:

    # name = "aleX leNb" 请输出 name 变量对应的值中 "e" 所在索引位置?
    name = "aleX leNb"
    num = 0
    while num < len(name):
        if name[num] == "e":
            print(num)
        num += 1
    # 输出结果是"e"所出现过的位置
    

    切片

    • 可以使⽤下标来截取部分字符串的内容
    • 语法格式: str[start : end : step] start : 开始 end : 结尾 step : 步长
    • 规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end
    s12 = "Alex是个教师"
    print(s12[0:3]) # 从0获取到3. 不包含3. 结果: Ale
    print(s12[4:])  # 如果想获取到最后. 那么最后⼀个值可以不给
    print(s12[-1:-5]) # 从-1 获取到 -5 这样是获取不到任何结果的. 从-1向右数. 你怎么数也数不到-5
    print(s12[-5:-1]) # 打印出的是 "x是个教"  (始终是从左往右取,  指的是start end 处设置的数字 在数轴(x轴)上的方向,-5是start开始位, -1是end位,取不到)
    print(s2[-1:-5:-1]) # 步⻓是-1. 这时就从右往左取值了
    print(s12[:]) # 原样输出 "Alex是个教师"
    print(s12[::2])  # 打印出"是Ae是教", 从0取到尾,每2个取1个字符
    

    字符串的常用相关操作⽅法

    字符大小写

    capitalize 首 字母大写
    s = "alex is not a good man! Tory is a good man"
    s1 = s.capitalize()  # 首字母大写
    print(s1) #打印出来是"Alex is not a good man! tory is a good man"
    
    upper 全部转换成⼤写
    • (忽略大小写的时候用,例 : 验证码) 例 ; s1
    lower 全部转换成⼩写
    • (忽略大小写的时候用,例 : 验证码) 例 ; s2
    swapcase ⼤⼩写互相转换
    • 例 ; s3
    casefold 全部转换成⼩写
    • 和 lower 的区别: lower 有些字种不支持(转换不了), casefold 支持更广的字种 例 ; s2
    title 每个隔开的首字母大写
    • 每个被特殊字符隔开的字⺟⾸字⺟⼤写, 首字母大写之后的转为小写 (下划线. 空格及其他) 例 print(s.title())
    s = "alex is not a good man! Tory is a good man"
    s1 = s.upper() # 全部转换成⼤写
    s2 = s.lower()
    s3 = s.swapcase()
    print(s1) #打印出来是"ALEX IS NOT A GOOD MAN! TORY IS A GOOD MAN"
    print(s2) #打印出来是"alex is not a good man! tory is a good man"
    print(s3) #打印出来是"ALEX IS NOT A GOOD MAN! tORY IS A GOOD MAN"
    print(s.title())   #打印出来是"Alex Is Not A Good Man! Tory Is A Good Man"
    

    切割

    center 扩充单位
    s = "刘伟"
    s1 = s.center(4,"*") # 把字符串拉长成4个单位 用*扩充
    print(s1)  打印结果"*刘伟*"
    
    strip 去空格 (常用)
    • 去掉左右两端空白,中间空白不去除 (用户输入内容都要去空白) ( ' '是换行符,' '是tab制表符)
    • 能同时去掉(空白 . 空格. . . white space )
    • rstrip() 去掉右边空格 lstrip() 去掉左边空格
    s = " 	       你好啊. 我叫赛利亚       "
    print(s)   # 打印结果"   	       你好啊. 我叫赛利亚       "
    s1 = s.strip() # 去掉空白
    print(s1)  # 打印结果"你好啊. 我叫赛利亚"
    s7 = "abcdefgabc"
    print(s7.strip("abc")) # defg 也可以指定去掉的元素
    

    扩展

    import string
    i = "Hello, how ? are, daddy's you ! "
    a = i.translate(str.maketrans('', '', string.punctuation))
    print(a)
    # 打印结果  Hello how  are daddys you
    
    
    
    
    replace(old, new) 字符串替换 (常用)
    s = "alex_wusir_ritian_taibai_evaj_eggon"
    s1 = s.replace("taibai", "taihei")
    s2 = s.replace("i", "SB", 2)   # 把i替换成SB, 替换2个 按从左向右的顺序
    print(s1)  # 打印结果alex_wusir_ritian_taihei_evaj_eggon
    print(s2)  # 打印结果alex_wusSBr_rSBtian_taibai_evaj_eggon
    
    
    
    split() 切割 (常用) 把字符串转化为列表
    join() 加入 split的逆反 把列表转化为字符串 ,也可以遍历字符串
    join 是遍历(迭代)方式添加
    
    li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"]
    s = "_".join(li)  
    print(s)
    li = "⻩花⼤闺⼥"
    s = "_".join(li)
    print(s)   # 打印结果 李嘉诚_麻花藤_⻩海峰_刘嘉玲
    
    
    
    • 打印结果是list(列表)
    s9 = "alex,wusir,sylar,taibai,eggon"
    lst = s9.split(",") # 字符串切割, 根据,进⾏切割
    print(lst)  #打印结果 ['alex', 'wusir', 'sylar', 'taibai', 'eggon']
    #坑
    s11 = "银王哈哈银王呵呵银王吼吼银王"
    lst = s11.split("银王") # 如果切割符在左右两端. 那么⼀定会出现空字符串.深坑请留意
    print(lst)  #打印结果  ['', '哈哈', '呵呵', '吼吼', '']
    
    
    

    查找

    startswith() 开头
    • 判断是否以xxx开头 输出结果为 True or False
    endtswith() 结尾
    • 判断是否以xxx结尾 输出结果为 True or False
    count("a") 统计次数
    • 统计
    • 查找"a"出现的次数
    find("sylar")
    • 查找'sylar'出现的位置 ( 如果没有返回-1)
    index()
    • 求索引位置. 注意. 如果找不到索引. 程序会报错
    isindex
    • 找到大写首字母

    以上格式一样

    s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔."
    ret1 = s13.startswith("sylar") # 判断是否以sylar开头
    print(ret1)  # 打印结果 False
    
    
    

    格式化输出

    # 格式化输出
    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)
    
    
    

    条件判断

    isalnum 是否由字⺟和数字组成
    isalpha 是否由字⺟和中文 组成 (常用) **
    isdigit 是否由数字组成, 不包括⼩数点
    isnumeric 是否由数字组成, 不包括⼩数点
    • (这个⽐较⽜B. 中⽂都识别)
    • 输出结果都是 True or False
    isdecimal 判断是不是十进制 用它来判断是不是阿拉伯数字 ***
    s14 = "123.16"
    s15 = "abc"
    s16 = "_abc!@"
    print(s14.isalnum())
    print(s14.isalpha())
    print(s14.isdecimal())
    
    
    

    计算字符串的⻓度 len

    • len() 求长度. 内置函数
    • (注意: len()是python的内置函数. 所以访问⽅式也不⼀样. 你就记着len()和print()⼀样就⾏了)
    s18 = "我是你的眼, 我也是a"
    ret = len(s18) # 计算字符串的⻓度
    print(ret)   # 打印结果 11
    
    
    

    迭代 for

    • 存储类型的集合,如list , dict , tuple , set et: 在迭代时,不容许里面的元素位置发生改变,如需改变里面的数据,需用其他存储数据转移迭代对象
    • 字典在循环的时候可以修改,但不能删除

    我们可以使⽤for循环来便利(获取)字符串中的每⼀个字符:

    • in有两种⽤法:
    • 在for中. 是把每⼀个元素获取到赋值给前⾯的变量.
    • 不在for中. 判断xxx是否出现在str中
    for循环
        for 变量 in 可迭代对象:
             循环体(break, continue)
        else:
            当循环结束的时候执行else
    
    
    
    # for 与 while 语句 对比:(各有利弊)
    #  while : (循环. 死循环 .有索引)
    s = "朱元璋朱棣12345"
    count = 0
    while count < len(s): # 遍历字符串的第一种办法
        print(s[count])
        count = count + 1
    
    # for : (没有索引)
    s = "朱元璋朱棣12345"
    for count in s:
        print(count)  # 打印出结果是遍历变量"s"例的元素
    print(count) ### 打印出变量最后一个元素(面试大坑)
     
    
    
    
    s = "朱元璋朱棣12345"
    for c in s:     # 遍历字符串的第二种办法
        print(c)
    
    
    

    for 语句 可以 以 else语句收尾 , else 语句可以打印出来

    s="321"
    for c in s :
        print("倒计时%s秒"%(c))
    else:
        print("出发!")
    # 倒计时3秒
    # 倒计时2秒
    # 倒计时1秒
    # 出发!
    
    
    

    扩展: pass 和 ... 都是占位符

    扩展:

    用for 或者 while 便利元素,如果不想便,print(便利,end = ""),这样会打印出横向的

    pint内运算会出现换行符

    s = "123"
    for i in s:
        print(i) # 打印出结果是纵向的"1""2""3"
        print(i) # 打印出结果是横向的"123"
    
    
    
    
  • 相关阅读:
    30天养成一个好习惯
    ym——安卓巴士总结了近百个Android优秀开源项
    内存泄漏以及常见的解决方法
    Android学习笔记(四十):Preference的使用
    Android中View绘制流程以及invalidate()等相关方法分析
    NumberFormat 类
    开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store
    memset函数具体说明
    分分钟教会你使用HTML写Web页面
    UVA 465 (13.08.02)
  • 原文地址:https://www.cnblogs.com/fanxss/p/10977466.html
Copyright © 2011-2022 走看看