zoukankan      html  css  js  c++  java
  • 第2章 python入门

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

    1.1 python基本数据类型

    1.int > 整数. 主要⽤来进⾏数学运算
    2.str > 字符串 可以保存少量数据并进⾏相应的操作
    3.bool
    >判断真假, True, False
    4.list
    > 存储⼤量数据.⽤[ ]表⽰
    5.tuple=> 元组, 不可以发⽣改变 ⽤( )表⽰
    6.dict> 字典, 保存键值对, ⼀样可以保存⼤量数据
    7.set
    > 集合 保存⼤量数据. 不可以重复. 其实就是不保存value的dict

    1.2 整数(int)

    在python3中所有的整数都是int类型. 但在python2中如果数据量比较⼤. 会使⽤long类型.
    在python3中不存在long类型
    整数可以进⾏的操作:
    bit_length(). 计算整数在内存中占⽤的⼆进制码的⻓度

    a = 5
    print(a.bit_length())
    输出结果为3
    

    1.3 布尔值(bool)

    取值只有True, False. bool值没有操作.
    转换问题:

    str => int int(str)
    int => str str(int)
    int => bool bool(int). 0是False 非0是True,空字符串""是False," "有空格字符串为True
    bool=>int int(bool) True是1, False是0
    str => bool bool(str) 空字符串是False, 不空是True
    bool => str str(bool) 把bool值转换成相应的"值"
    

    None 表示空,真空,所有的空都是False,所有的费控都是True
    想把某数据类型转换成xxx数据类型,xxx(数据)

    while 1:#死循环
    	print("人才") 
    
    while True:#死循环
    	print("人才")
    

    第一种死循环速度要比第二种快,因为计算机只识别01,第二种还要将True转换为数字

    1.4 字符串(str)

    把字符连成串. 在python中⽤', ", ''', """引起来的内容被称为字符串
    字符串是不可变的数据类型,无论你执行任何操作,源字符串是不会改变的

    1.4.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, 越界了. 会报错
    IndexError: string index out of range
    
    print(s1[-1]) # -1 表示倒数.
    print(s1[-2]) # 倒数第⼆个
    

    1.4.2 切片

    切片, 我们可以使⽤下标来截取部分字符串的内容
    语法: str[start: end]
    规则: 顾头不顾腚 从start开始截取. 截取到end位置. 但不包括end

    #     0123456 7 8
    s2 = "python最⽜B"
    
    print(s2[0:3]) # 从0获取到3. 不包含3. 结果: pyt
    print(s2[6:8]) # 结果 最⽜
    print(s2[6:9]) # 最⼤是8. 但根据顾头不顾腚, 想要取到8必须给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[:]) # 原样输出
    

    特点总结:1.顾头不顾尾,2.只能从左往右切(默认情况)

    给出第三个参数来控制方向,第三个参数叫步长

    print(s2[-1:-3:-1]) #表示反方向,从右往左切,结:B牛
    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

    1.4.3 字符串操作

    字符串的相关操作⽅法
    切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的
    ⼤⼩写转来转去

    # 把首字母变成大写
    s = "yang is a gay"
    s1 = s.capitalize() 
    print(s1)
    输出为:Yang is a gay
    
    
    # 全部转换为小写
    s = "alex is a gay and Wusir is A gay too"
    s1 = s.lower()  
    print(s1)
    输出为:alex is a gay and wusir is a gay too
    
    # 全部转换为大写(重点记住这个)
    s = "alex is a gay and Wusir is A gay too"
    s1 = s.upper()
    print(s1)
    输出为:ALEX IS A GAY AND WUSIR IS A GAY TOO
    
    # 大小写互换
    s = "alex is a gay and Wusir is A gay too"
    s1 = s.swapcase()
    print(s1)
    输出为:ALEX IS A GAY AND wUSIR IS a GAY TOO
    
    # 转成小写
    ret = s1.casefold() # 转换成⼩写, 和lower的区别: lower()对某些字符⽀持不够好.
    casefold()对所有字⺟都有效. ⽐如东欧的⼀些字⺟
    print(ret)
    
    s2 = "БBß" # 俄美德
    print(s2)
    print(s2.lower())
    print(s2.casefold())
    输出为:
    БBß
    бbß
    бbss
    
    # 每个被特殊字符隔开的字⺟⾸字⺟⼤写
    s3 = "alex eggon,taibai*yinwang_麻花藤"
    ret = s3.title() # Alex Eggon,Taibai*Yinwang_麻花藤
    print(ret)
    
    # 中⽂也算是特殊字符
    s4 = "alex⽼男孩wusir" # Alex⽼男孩Wusir
    print(s4.title())
    

    切来切去

    # 居中
    s = "sb"
    s1 = s.center(10,"*") # 拉⻓成10, 把原字符串放中间.其余位置补*
    print(s1)
    
    # 更改tab的⻓度
    s6 = "alex wusir	eggon"
    print(s6)
    print(s6.expandtabs()) # 可以改变	的⻓度 默认⻓度更改为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 也可以指定去掉左右两边的abc
    
    # 字符串替换
    s8 = "sylar_alex_taibai_wusir_eggon"
    ret = s8.replace('alex', '⾦⻆⼤王') # 把alex替换成⾦⻆⼤王
    print(s8) # sylar_alex_taibai_wusir_eggon 切记, 字符串是不可变对象. 所有操作都是产⽣新字符串返回
    print(ret) # sylar_⾦⻆⼤王_taib
    
    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("
    ")) # ⽤
    切割
    
    # 坑
    s11 = "银王哈哈银王呵呵银王吼吼银王"
    lst = s11.split("银王") # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右两端. 那么⼀
    定会出现空字符串.深坑请留意
    print(lst)
    

    1.4.4 格式化输出

    s = "我叫%s, 我今年%s了, 我喜欢%s" % ("周杰伦", "40", "昆凌")
    print(s)
    
    s = "我叫{}, 我今年{}了, 我喜欢{}".format("周杰伦", "40", "昆凌")  #括号里的值顺序是死的
    print(s)
    
    s = "我叫{0}, 我今年{1}了, 我喜欢{2}".format("周杰伦", "40", "昆凌")  #可以定义括号里面值的顺序
    print(s)
    
    s = "我叫{name}, 我今年{age}了, 我喜欢{hobby}".format(hobby="周杰伦", age="40", name="昆凌")  #指定值
    print(s)
    

    1.4.5 查找

    s = "alex is a gay"
    print(s.startswith("tory")) # 以xxx开头
    print(s.endswith("girl")) # 以xxx结尾
    
    s = "I have a dream. I want to kill you!"
    都可以进行索引范围
    print(s.count("a")) # 计算a在字符串中出现的次数
    print(s.find("a")) # 查找xxx在字符串中出现的位置. 只找第一次出现的位置, 没有就返回-1
    print(s.index("z")) # 当字符串不存在的时候. 报错
    

    1.4.6 判断

    s = "abcdefg1@"
    print(s.isdigit()) # %dprint(s.isalpha()) # 字母
    print(s.isalnum()) # 是否由数字和字母组成
    
    s = "壹仟贰佰五十六萬拾"
    print(s.isnumeric())
    
    字符串长度, python的内置函数len(), int(), bool(), str(), type()
    s = "娃哈哈可口可乐"
    print(len(s)) # 字符串中的字符的个数
    

    1.4.7 for迭代

    s = "王小利刘能赵四"
    # 对字符串进行遍历.
    n = 0
    while n < len(s):
        print(s[n])
        n = n + 1
    
    # 迭代
    for c in s: # charactor
        print(c)
    

    1.5 练习题

    有变量name="aleX leNb" 完成如下操作:

    1.移除name变量对应的值两边的空格,并输出处理结果

    s1 = name.strip()
    print(s1)
    

    2.移除name变量左边的"al"并输出处理结果

    s2 = name.lstrip("al")
    print(s2)
    

    3.移除name变量右边的"Nb",并输出处理结果

    s3 = name.rstrip("Nb")
    print(s3)
    

    4.移除name变量开头的"a"与最后的"b"并输出处理结果

    s4 = name.strip("a").strip("b")
    print(s4)
    
  • 相关阅读:
    PTA|基础编程题目集|7-8
    PTA|基础编程题目集|7-7
    PTA|基础编程题目集|7-11
    PTA|基础编程题目集|7-3
    PTA|基础编程题目集|7-2
    PTA|基础编程题目集|7-1
    PTA|基础编程题目集|7-5
    PTA|基础编程题目集|7-6
    scrapy-redis使用以及剖析
    Python数据库连接池DBUtils
  • 原文地址:https://www.cnblogs.com/blsnt/p/10190690.html
Copyright © 2011-2022 走看看