zoukankan      html  css  js  c++  java
  • python基础(2)

    ⼀一.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(). 计算整数在内存中占⽤用的⼆二进制码的⻓长度
    ⼗十进制 ⼆二进制 ⻓长度bit_length() 1 1 1 2 10 2 3 11 2 4 100 3 5 101 3 6 110 3 7 111 3
    三. 布尔值(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开始        #     0123456 7 8 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])   # 倒数第⼆二个
    2. 切片, 我们可以使⽤用下标来截取部分字符串串的内容    语法: str[start: end]    规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end    s2 = "python⽜牛B"
    8 1000 4
    print(s2[0:3])  # 从0获取到3. 不不包含3. 结果: pyt print(s2[6:8])  # 结果 ⽜牛 print(s2[6:9])  # ⼤大是8. 但根据顾头不不顾腚, 想要取到8必须给9 print(s2[6:10])  # 如果右边已经过了了⼤大值. 相当于获取到后 print(s2[4:])   # 如果想获取到后. 那么后⼀一个值可以不不给. print(s2[-1:-5])    # 从-1 获取到 -5 这样是获取不不到任何结果的. 从-1向右数. 你怎么数 也数不不到-5 print(s2[-5:-1])    # ⽜牛b, 取到数据了了. 但是. 顾头不不顾腚. 怎么取后⼀一个呢? print(s2[-5:])  # 什什么都不不写就是后了了 print(s2[:-1])  # 这个是取到倒数第⼀一个 print(s2[:])    # 原样输出     跳着截取 # 跳着取, 步⻓长 print(s2[1:5:2])    # 从第⼀一个开始取, 取到第5个,每2个取1个, 结果: yh, 分析: 1:5=> ytho => yh print(s2[:5:2])     # 从头开始到第五个. 每两个取⼀一个 print(s2[4::2])     # 从4开始取到后. 每两个取⼀一个 print(s2[-5::2])    # 从-5取到后.每两个取⼀一个 print(s2[-1:-5])    # -1:-5什什么都没有. 因为是从左往右获取的. print(s2[-1:-5:-1])  # 步⻓长是-1. 这时就从右往左取值了了 print(s2[-5::-3])   # 从倒数第5个开始. 到开始. 每3个取⼀一个, 结果oy    步⻓长: 如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1    切片语法:        str[start:end:step]    start: 起始位置    end: 结束位置    step:步⻓长
    4.2 字符串串的相关操作⽅方法 切记, 字符串串是不可变的对象, 所以任何操作对原字符串串是不会有任何影响的
    1. ⼤大⼩小写转来转去
    s1.capitalize() print(s1)   # 输出发现并没有任何的变化. 因为这⾥里里的字符串串本身是不不会发⽣生改变的. 需要我们 重新获取 ret1 = s1.capitalize() print(ret1) # ⼤大⼩小写的转换
    ret = s1.lower()    # 全部转换成⼩小写 print(ret) ret = s1.upper()     # 全部转换成⼤大写 print(ret) # 应⽤用, 校验⽤用户输⼊入的验证码是否合法 verify_code = "abDe" user_verify_code = input("请输⼊入验证码:") if verify_code.upper() == user_verify_code.upper():    print("验证成功") else:    print("验证失败")
    ret = s1.swapcase()     # ⼤大⼩小写互相转换 print(ret) # 不不常⽤用 ret = s1.casefold()     # 转换成⼩小写, 和lower的区别: lower()对某些字符⽀支持不不够好. casefold()对所有字⺟母都有效. ⽐比如东欧的⼀一些字⺟母 print(ret) s2 = "БBß"  # 俄美德 print(s2) print(s2.lower()) print(s2.casefold())
    # 每个被特殊字符隔开的字⺟母⾸首字⺟母⼤大写 s3 = "alex eggon,taibai*yinwang_麻花藤" ret = s3.title()       # Alex Eggon,Taibai*Yinwang_麻花藤 print(ret) # 中⽂文也算是特殊字符 s4 = "alex⽼老老男孩wusir"     # Alex⽼老老男孩Wusir print(s4.title())
    2. 切来切去
    # 居中 s5 = "周杰伦" ret = s5.center(10, "*")   # 拉⻓长成10, 把原字符串串放中间.其余位置补* print(ret) # 更更改tab的⻓长度 s6 = "alex wusir\teggon"
    print(s6) print(s6.expandtabs())    # 可以改变\t的⻓长度, 默认⻓长度更更改为8
    # 去空格 s7 = "   alex wusir   haha " ret = s7.strip()    # 去掉左右两端的空格 print(ret) ret = s7.lstrip()   # 去掉左边空格 print(ret) ret = s7.rstrip()   # 去掉右边空格 print(ret) # 应⽤用, 模拟⽤用户登录. 忽略略⽤用户输⼊入的空格 username = input("请输⼊入⽤用户名:").strip() password = input("请输⼊入密码: ").strip() if username == 'alex' and password == '123':    print("登录成功") else:    print("登录失败")
    s7 = "abcdefgabc" print(s7.strip("abc"))  # defg 也可以指定去掉的元素,
    # 字符串串替换 s8 = "sylar_alex_taibai_wusir_eggon" ret = s8.replace('alex', '⾦金金⻆角⼤大王')    # 把alex替换成⾦金金⻆角⼤大王 print(s8)   # sylar_alex_taibai_wusir_eggon 切记, 字符串串是不不可变对象. 所有操作都 是产⽣生新字符串串返回 print(ret)  # sylar_⾦金金⻆角⼤大王_taibai_wusir_eggon ret = s8.replace('i', 'SB', 2)     # 把i替换成SB, 替换2个 print(ret)  # sylar_alex_taSBbaSB_wusir_eggon # 字符串串切割 s9 = "alex,wusir,sylar,taibai,eggon" lst = s9.split(",")     # 字符串串切割, 根据,进⾏行行切割 print(lst) s10 = """诗⼈人 学者 感叹号 渣渣""" print(s10.split("\n"))  # ⽤用\n切割
    # 坑
    s11 = "银王哈哈银王呵呵银王吼吼银王" lst = s11.split("银王")   # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右两端. 那么⼀一 定会出现空字符串串.深坑请留留意 print(lst)
    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)    5. 条件判断
    # 条件判断 s14 = "123.16" s15 = "abc" s16 = "_abc!@" # 是否由字⺟母和数字组成 print(s14.isalnum()) print(s15.isalnum()) print(s16.isalnum()) # 是否由字⺟母组成 print(s14.isalpha()) print(s15.isalpha()) print(s16.isalpha()) # 是否由数字组成, 不不包括⼩小数点 print(s14.isdigit()) print(s14.isdecimal()) print(s14.isnumeric())  # 这个⽐比较⽜牛B. 中⽂文都识别. print(s15.isdigit()) print(s16.isdigit())
    # 练习. ⽤用算法判断某⼀一个字符串串是否是⼩小数 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)  # 计算字符串串的⻓长度 print(ret)        注意: len()是python的内置函数. 所以访问⽅方式也不⼀一样. 你就记着len()和print()⼀一样就⾏行行 了了
    7. 迭代            我们可以使⽤用for循环来便便利利(获取)字符串串中的每⼀一个字符            语法:                for 变量量 in 可迭代对象:
                        pass                可迭代对象: 可以⼀一个⼀一个往外取值的对象 s19 = "⼤大家好, 我是VUE, 前端的⼩小朋友们. 你们好么?" # ⽤用while循环 index = 0 while index < len(s19):    print(s19[index])   # 利利⽤用索引切⽚片来完成字符的查找    index = index + 1
    # for循环, 把s19中的每⼀一个字符拿出来赋值给前⾯面的c for c in s19:    print(c)
    '''    in有两种⽤用法:        1. 在for中. 是把每⼀一个元素获取到赋值给前⾯面的变量量.        2. 不不在for中. 判断xxx是否出现在str中. ''' print('VUE' in s19)
    # 练习, 计算在字符串串"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 c in s20:    if c.isdigit():        count = count + 1
    print(count)

  • 相关阅读:
    外校培训前三节课知识集合纲要(我才不会告诉你我前两节只是单纯的忘了)
    floyd算法----牛栏
    bfs开始--马的遍历
    (DP 线性DP 递推) leetcode 64. Minimum Path Sum
    (DP 线性DP 递推) leetcode 63. Unique Paths II
    (DP 线性DP 递推) leetcode 62. Unique Paths
    (DP 背包) leetcode 198. House Robber
    (贪心 复习) leetcode 1007. Minimum Domino Rotations For Equal Row
    (贪心) leetcode 452. Minimum Number of Arrows to Burst Balloons
    (字符串 栈) leetcode 921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/w18s/p/10206839.html
Copyright © 2011-2022 走看看